@clayroach/effect 3.19.14-source-capture.8 → 3.19.14-source-trace.2
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/SourceLocation/package.json +6 -0
- package/dist/cjs/Effect.js +2 -28
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/FiberRef.js +12 -1
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/Layer.js +2 -24
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/RuntimeFlags.js +1 -29
- package/dist/cjs/RuntimeFlags.js.map +1 -1
- package/dist/cjs/SourceLocation.js +60 -0
- package/dist/cjs/SourceLocation.js.map +1 -0
- package/dist/cjs/Tracer.js +1 -15
- package/dist/cjs/Tracer.js.map +1 -1
- package/dist/cjs/Utils.js +1 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/clock.js +1 -1
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/core.js +17 -50
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +18 -30
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +16 -65
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js +1 -5
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +1 -3
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logger.js +25 -2
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/runtimeFlags.js +2 -11
- package/dist/cjs/internal/runtimeFlags.js.map +1 -1
- package/dist/cjs/internal/tracer.js +1 -114
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/dts/Config.d.ts +2 -2
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +8 -29
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +12 -0
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +0 -22
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/RuntimeFlags.d.ts +0 -28
- package/dist/dts/RuntimeFlags.d.ts.map +1 -1
- package/dist/dts/SourceLocation.d.ts +88 -0
- package/dist/dts/SourceLocation.d.ts.map +1 -0
- package/dist/dts/Tracer.d.ts +0 -15
- package/dist/dts/Tracer.d.ts.map +1 -1
- package/dist/dts/index.d.ts +6 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/layer.d.ts.map +1 -1
- package/dist/dts/internal/runtimeFlags.d.ts.map +1 -1
- package/dist/esm/Effect.js +0 -26
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/FiberRef.js +11 -0
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/Layer.js +0 -22
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/RuntimeFlags.js +0 -28
- package/dist/esm/RuntimeFlags.js.map +1 -1
- package/dist/esm/SourceLocation.js +51 -0
- package/dist/esm/SourceLocation.js.map +1 -0
- package/dist/esm/Tracer.js +0 -14
- package/dist/esm/Tracer.js.map +1 -1
- package/dist/esm/Utils.js +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/clock.js +1 -1
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/core.js +12 -45
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +18 -30
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +13 -60
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/layer/circular.js +0 -4
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/layer.js +0 -2
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logger.js +25 -2
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/runtimeFlags.js +1 -9
- package/dist/esm/internal/runtimeFlags.js.map +1 -1
- package/dist/esm/internal/tracer.js +0 -111
- package/dist/esm/internal/tracer.js.map +1 -1
- package/package.json +12 -1
- package/src/Arbitrary.ts +1101 -0
- package/src/Array.ts +3589 -0
- package/src/BigDecimal.ts +1349 -0
- package/src/BigInt.ts +643 -0
- package/src/Boolean.ts +287 -0
- package/src/Brand.ts +360 -0
- package/src/Cache.ts +281 -0
- package/src/Cause.ts +1555 -0
- package/src/Channel.ts +2355 -0
- package/src/ChildExecutorDecision.ts +146 -0
- package/src/Chunk.ts +1495 -0
- package/src/Clock.ts +111 -0
- package/src/Config.ts +542 -0
- package/src/ConfigError.ts +270 -0
- package/src/ConfigProvider.ts +333 -0
- package/src/ConfigProviderPathPatch.ts +100 -0
- package/src/Console.ts +226 -0
- package/src/Context.ts +585 -0
- package/src/Cron.ts +706 -0
- package/src/Data.ts +596 -0
- package/src/DateTime.ts +1686 -0
- package/src/DefaultServices.ts +34 -0
- package/src/Deferred.ts +301 -0
- package/src/Differ.ts +450 -0
- package/src/Duration.ts +1000 -0
- package/src/Effect.ts +14817 -0
- package/src/Effectable.ts +107 -0
- package/src/Either.ts +1040 -0
- package/src/Encoding.ts +195 -0
- package/src/Equal.ts +98 -0
- package/src/Equivalence.ts +235 -0
- package/src/ExecutionPlan.ts +308 -0
- package/src/ExecutionStrategy.ts +119 -0
- package/src/Exit.ts +467 -0
- package/src/FastCheck.ts +9 -0
- package/src/Fiber.ts +744 -0
- package/src/FiberHandle.ts +540 -0
- package/src/FiberId.ts +195 -0
- package/src/FiberMap.ts +656 -0
- package/src/FiberRef.ts +444 -0
- package/src/FiberRefs.ts +204 -0
- package/src/FiberRefsPatch.ts +105 -0
- package/src/FiberSet.ts +491 -0
- package/src/FiberStatus.ts +108 -0
- package/src/Function.ts +1222 -0
- package/src/GlobalValue.ts +53 -0
- package/src/Graph.ts +3732 -0
- package/src/GroupBy.ts +103 -0
- package/src/HKT.ts +45 -0
- package/src/Hash.ts +195 -0
- package/src/HashMap.ts +519 -0
- package/src/HashRing.ts +317 -0
- package/src/HashSet.ts +2346 -0
- package/src/Inspectable.ts +287 -0
- package/src/Iterable.ts +1119 -0
- package/src/JSONSchema.ts +1044 -0
- package/src/KeyedPool.ts +167 -0
- package/src/Layer.ts +1228 -0
- package/src/LayerMap.ts +436 -0
- package/src/List.ts +977 -0
- package/src/LogLevel.ts +285 -0
- package/src/LogSpan.ts +25 -0
- package/src/Logger.ts +702 -0
- package/src/Mailbox.ts +268 -0
- package/src/ManagedRuntime.ts +180 -0
- package/src/Match.ts +1477 -0
- package/src/MergeDecision.ts +95 -0
- package/src/MergeState.ts +172 -0
- package/src/MergeStrategy.ts +107 -0
- package/src/Metric.ts +780 -0
- package/src/MetricBoundaries.ts +69 -0
- package/src/MetricHook.ts +151 -0
- package/src/MetricKey.ts +224 -0
- package/src/MetricKeyType.ts +262 -0
- package/src/MetricLabel.ts +47 -0
- package/src/MetricPair.ts +71 -0
- package/src/MetricPolling.ts +148 -0
- package/src/MetricRegistry.ts +48 -0
- package/src/MetricState.ts +257 -0
- package/src/Micro.ts +4405 -0
- package/src/ModuleVersion.ts +18 -0
- package/src/MutableHashMap.ts +411 -0
- package/src/MutableHashSet.ts +706 -0
- package/src/MutableList.ts +297 -0
- package/src/MutableQueue.ts +227 -0
- package/src/MutableRef.ts +202 -0
- package/src/NonEmptyIterable.ts +32 -0
- package/src/Number.ts +1071 -0
- package/src/Option.ts +2170 -0
- package/src/Order.ts +373 -0
- package/src/Ordering.ts +111 -0
- package/src/ParseResult.ts +2031 -0
- package/src/PartitionedSemaphore.ts +200 -0
- package/src/Pipeable.ts +566 -0
- package/src/Pool.ts +204 -0
- package/src/Predicate.ts +1405 -0
- package/src/Pretty.ts +205 -0
- package/src/PrimaryKey.ts +23 -0
- package/src/PubSub.ts +182 -0
- package/src/Queue.ts +644 -0
- package/src/Random.ts +204 -0
- package/src/RateLimiter.ts +138 -0
- package/src/RcMap.ts +141 -0
- package/src/RcRef.ts +122 -0
- package/src/Readable.ts +93 -0
- package/src/Record.ts +1274 -0
- package/src/RedBlackTree.ts +421 -0
- package/src/Redacted.ts +144 -0
- package/src/Ref.ts +180 -0
- package/src/RegExp.ts +38 -0
- package/src/Reloadable.ts +127 -0
- package/src/Request.ts +347 -0
- package/src/RequestBlock.ts +118 -0
- package/src/RequestResolver.ts +366 -0
- package/src/Resource.ts +119 -0
- package/src/Runtime.ts +383 -0
- package/src/RuntimeFlags.ts +336 -0
- package/src/RuntimeFlagsPatch.ts +183 -0
- package/src/STM.ts +2045 -0
- package/src/Schedule.ts +2219 -0
- package/src/ScheduleDecision.ts +62 -0
- package/src/ScheduleInterval.ts +151 -0
- package/src/ScheduleIntervals.ts +122 -0
- package/src/Scheduler.ts +353 -0
- package/src/Schema.ts +10914 -0
- package/src/SchemaAST.ts +3043 -0
- package/src/Scope.ts +204 -0
- package/src/ScopedCache.ts +151 -0
- package/src/ScopedRef.ts +117 -0
- package/src/Secret.ts +88 -0
- package/src/SingleProducerAsyncInput.ts +67 -0
- package/src/Sink.ts +1461 -0
- package/src/SortedMap.ts +287 -0
- package/src/SortedSet.ts +390 -0
- package/src/SourceLocation.ts +108 -0
- package/src/Stream.ts +6468 -0
- package/src/StreamEmit.ts +136 -0
- package/src/StreamHaltStrategy.ts +123 -0
- package/src/Streamable.ts +45 -0
- package/src/String.ts +778 -0
- package/src/Struct.ts +243 -0
- package/src/Subscribable.ts +100 -0
- package/src/SubscriptionRef.ts +298 -0
- package/src/Supervisor.ts +240 -0
- package/src/Symbol.ts +29 -0
- package/src/SynchronizedRef.ts +270 -0
- package/src/TArray.ts +495 -0
- package/src/TDeferred.ts +100 -0
- package/src/TMap.ts +515 -0
- package/src/TPriorityQueue.ts +223 -0
- package/src/TPubSub.ts +200 -0
- package/src/TQueue.ts +432 -0
- package/src/TRandom.ts +129 -0
- package/src/TReentrantLock.ts +224 -0
- package/src/TRef.ts +178 -0
- package/src/TSemaphore.ts +129 -0
- package/src/TSet.ts +365 -0
- package/src/TSubscriptionRef.ts +192 -0
- package/src/Take.ts +258 -0
- package/src/TestAnnotation.ts +158 -0
- package/src/TestAnnotationMap.ts +119 -0
- package/src/TestAnnotations.ts +117 -0
- package/src/TestClock.ts +556 -0
- package/src/TestConfig.ts +47 -0
- package/src/TestContext.ts +36 -0
- package/src/TestLive.ts +53 -0
- package/src/TestServices.ts +390 -0
- package/src/TestSized.ts +55 -0
- package/src/Tracer.ts +182 -0
- package/src/Trie.ts +840 -0
- package/src/Tuple.ts +305 -0
- package/src/Types.ts +353 -0
- package/src/Unify.ts +113 -0
- package/src/UpstreamPullRequest.ts +117 -0
- package/src/UpstreamPullStrategy.ts +121 -0
- package/src/Utils.ts +809 -0
- package/src/index.ts +1568 -0
- package/src/internal/array.ts +8 -0
- package/src/internal/blockedRequests.ts +520 -0
- package/src/internal/cache.ts +733 -0
- package/src/internal/cause.ts +1050 -0
- package/src/internal/channel/channelExecutor.ts +1200 -0
- package/src/internal/channel/channelState.ts +134 -0
- package/src/internal/channel/childExecutorDecision.ts +96 -0
- package/src/internal/channel/continuation.ts +200 -0
- package/src/internal/channel/mergeDecision.ts +113 -0
- package/src/internal/channel/mergeState.ts +120 -0
- package/src/internal/channel/mergeStrategy.ts +72 -0
- package/src/internal/channel/singleProducerAsyncInput.ts +259 -0
- package/src/internal/channel/subexecutor.ts +229 -0
- package/src/internal/channel/upstreamPullRequest.ts +84 -0
- package/src/internal/channel/upstreamPullStrategy.ts +87 -0
- package/src/internal/channel.ts +2603 -0
- package/src/internal/clock.ts +95 -0
- package/src/internal/completedRequestMap.ts +9 -0
- package/src/internal/concurrency.ts +54 -0
- package/src/internal/config.ts +716 -0
- package/src/internal/configError.ts +304 -0
- package/src/internal/configProvider/pathPatch.ts +97 -0
- package/src/internal/configProvider.ts +799 -0
- package/src/internal/console.ts +153 -0
- package/src/internal/context.ts +337 -0
- package/src/internal/core-effect.ts +2293 -0
- package/src/internal/core-stream.ts +998 -0
- package/src/internal/core.ts +3189 -0
- package/src/internal/data.ts +36 -0
- package/src/internal/dataSource.ts +327 -0
- package/src/internal/dateTime.ts +1277 -0
- package/src/internal/defaultServices/console.ts +100 -0
- package/src/internal/defaultServices.ts +163 -0
- package/src/internal/deferred.ts +46 -0
- package/src/internal/differ/chunkPatch.ts +211 -0
- package/src/internal/differ/contextPatch.ts +232 -0
- package/src/internal/differ/hashMapPatch.ts +220 -0
- package/src/internal/differ/hashSetPatch.ts +176 -0
- package/src/internal/differ/orPatch.ts +311 -0
- package/src/internal/differ/readonlyArrayPatch.ts +210 -0
- package/src/internal/differ.ts +200 -0
- package/src/internal/doNotation.ts +80 -0
- package/src/internal/effect/circular.ts +895 -0
- package/src/internal/effectable.ts +131 -0
- package/src/internal/either.ts +110 -0
- package/src/internal/encoding/base64.ts +286 -0
- package/src/internal/encoding/base64Url.ts +29 -0
- package/src/internal/encoding/common.ts +51 -0
- package/src/internal/encoding/hex.ts +315 -0
- package/src/internal/errors.ts +7 -0
- package/src/internal/executionPlan.ts +114 -0
- package/src/internal/executionStrategy.ts +74 -0
- package/src/internal/fiber.ts +388 -0
- package/src/internal/fiberId.ts +267 -0
- package/src/internal/fiberMessage.ts +82 -0
- package/src/internal/fiberRefs/patch.ts +144 -0
- package/src/internal/fiberRefs.ts +297 -0
- package/src/internal/fiberRuntime.ts +3842 -0
- package/src/internal/fiberScope.ts +71 -0
- package/src/internal/fiberStatus.ts +119 -0
- package/src/internal/groupBy.ts +530 -0
- package/src/internal/hashMap/array.ts +49 -0
- package/src/internal/hashMap/bitwise.ts +32 -0
- package/src/internal/hashMap/config.ts +14 -0
- package/src/internal/hashMap/keySet.ts +8 -0
- package/src/internal/hashMap/node.ts +391 -0
- package/src/internal/hashMap.ts +586 -0
- package/src/internal/hashSet.ts +323 -0
- package/src/internal/keyedPool.ts +244 -0
- package/src/internal/layer/circular.ts +214 -0
- package/src/internal/layer.ts +1483 -0
- package/src/internal/logSpan.ts +20 -0
- package/src/internal/logger-circular.ts +24 -0
- package/src/internal/logger.ts +522 -0
- package/src/internal/mailbox.ts +561 -0
- package/src/internal/managedRuntime/circular.ts +6 -0
- package/src/internal/managedRuntime.ts +134 -0
- package/src/internal/matcher.ts +652 -0
- package/src/internal/metric/boundaries.ts +75 -0
- package/src/internal/metric/hook.ts +483 -0
- package/src/internal/metric/key.ts +167 -0
- package/src/internal/metric/keyType.ts +238 -0
- package/src/internal/metric/label.ts +41 -0
- package/src/internal/metric/pair.ts +48 -0
- package/src/internal/metric/polling.ts +149 -0
- package/src/internal/metric/registry.ts +187 -0
- package/src/internal/metric/state.ts +290 -0
- package/src/internal/metric.ts +577 -0
- package/src/internal/opCodes/cause.ts +35 -0
- package/src/internal/opCodes/channel.ts +83 -0
- package/src/internal/opCodes/channelChildExecutorDecision.ts +17 -0
- package/src/internal/opCodes/channelMergeDecision.ts +11 -0
- package/src/internal/opCodes/channelMergeState.ts +17 -0
- package/src/internal/opCodes/channelMergeStrategy.ts +11 -0
- package/src/internal/opCodes/channelState.ts +23 -0
- package/src/internal/opCodes/channelUpstreamPullRequest.ts +11 -0
- package/src/internal/opCodes/channelUpstreamPullStrategy.ts +11 -0
- package/src/internal/opCodes/config.ts +65 -0
- package/src/internal/opCodes/configError.ts +35 -0
- package/src/internal/opCodes/continuation.ts +11 -0
- package/src/internal/opCodes/deferred.ts +11 -0
- package/src/internal/opCodes/effect.ts +89 -0
- package/src/internal/opCodes/layer.ts +59 -0
- package/src/internal/opCodes/streamHaltStrategy.ts +23 -0
- package/src/internal/option.ts +80 -0
- package/src/internal/pool.ts +432 -0
- package/src/internal/pubsub.ts +1762 -0
- package/src/internal/query.ts +204 -0
- package/src/internal/queue.ts +766 -0
- package/src/internal/random.ts +161 -0
- package/src/internal/rateLimiter.ts +93 -0
- package/src/internal/rcMap.ts +285 -0
- package/src/internal/rcRef.ts +192 -0
- package/src/internal/redBlackTree/iterator.ts +200 -0
- package/src/internal/redBlackTree/node.ts +68 -0
- package/src/internal/redBlackTree.ts +1245 -0
- package/src/internal/redacted.ts +73 -0
- package/src/internal/ref.ts +171 -0
- package/src/internal/reloadable.ts +140 -0
- package/src/internal/request.ts +177 -0
- package/src/internal/resource.ts +76 -0
- package/src/internal/ringBuffer.ts +68 -0
- package/src/internal/runtime.ts +558 -0
- package/src/internal/runtimeFlags.ts +178 -0
- package/src/internal/runtimeFlagsPatch.ts +103 -0
- package/src/internal/schedule/decision.ts +47 -0
- package/src/internal/schedule/interval.ts +101 -0
- package/src/internal/schedule/intervals.ts +180 -0
- package/src/internal/schedule.ts +2199 -0
- package/src/internal/schema/errors.ts +191 -0
- package/src/internal/schema/schemaId.ts +106 -0
- package/src/internal/schema/util.ts +50 -0
- package/src/internal/scopedCache.ts +644 -0
- package/src/internal/scopedRef.ts +118 -0
- package/src/internal/secret.ts +89 -0
- package/src/internal/singleShotGen.ts +35 -0
- package/src/internal/sink.ts +2120 -0
- package/src/internal/stack.ts +10 -0
- package/src/internal/stm/core.ts +817 -0
- package/src/internal/stm/entry.ts +59 -0
- package/src/internal/stm/journal.ts +123 -0
- package/src/internal/stm/opCodes/stm.ts +71 -0
- package/src/internal/stm/opCodes/stmState.ts +17 -0
- package/src/internal/stm/opCodes/strategy.ts +17 -0
- package/src/internal/stm/opCodes/tExit.ts +29 -0
- package/src/internal/stm/opCodes/tryCommit.ts +11 -0
- package/src/internal/stm/stm.ts +1453 -0
- package/src/internal/stm/stmState.ts +136 -0
- package/src/internal/stm/tArray.ts +550 -0
- package/src/internal/stm/tDeferred.ts +81 -0
- package/src/internal/stm/tExit.ts +190 -0
- package/src/internal/stm/tMap.ts +824 -0
- package/src/internal/stm/tPriorityQueue.ts +267 -0
- package/src/internal/stm/tPubSub.ts +551 -0
- package/src/internal/stm/tQueue.ts +393 -0
- package/src/internal/stm/tRandom.ts +140 -0
- package/src/internal/stm/tReentrantLock.ts +352 -0
- package/src/internal/stm/tRef.ts +195 -0
- package/src/internal/stm/tSemaphore.ts +113 -0
- package/src/internal/stm/tSet.ts +259 -0
- package/src/internal/stm/tSubscriptionRef.ts +286 -0
- package/src/internal/stm/tryCommit.ts +34 -0
- package/src/internal/stm/txnId.ts +14 -0
- package/src/internal/stm/versioned.ts +4 -0
- package/src/internal/stream/debounceState.ts +57 -0
- package/src/internal/stream/emit.ts +123 -0
- package/src/internal/stream/haltStrategy.ts +94 -0
- package/src/internal/stream/handoff.ts +187 -0
- package/src/internal/stream/handoffSignal.ts +59 -0
- package/src/internal/stream/pull.ts +34 -0
- package/src/internal/stream/sinkEndReason.ts +30 -0
- package/src/internal/stream/zipAllState.ts +88 -0
- package/src/internal/stream/zipChunksState.ts +56 -0
- package/src/internal/stream.ts +8801 -0
- package/src/internal/string-utils.ts +107 -0
- package/src/internal/subscriptionRef.ts +138 -0
- package/src/internal/supervisor/patch.ts +190 -0
- package/src/internal/supervisor.ts +303 -0
- package/src/internal/synchronizedRef.ts +114 -0
- package/src/internal/take.ts +199 -0
- package/src/internal/testing/sleep.ts +27 -0
- package/src/internal/testing/suspendedWarningData.ts +85 -0
- package/src/internal/testing/warningData.ts +94 -0
- package/src/internal/tracer.ts +150 -0
- package/src/internal/trie.ts +722 -0
- package/src/internal/version.ts +7 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Context from "./Context.js"
|
|
5
|
+
import type * as DefaultServices from "./DefaultServices.js"
|
|
6
|
+
import * as Effect from "./Effect.js"
|
|
7
|
+
import type * as Fiber from "./Fiber.js"
|
|
8
|
+
import type * as FiberRef from "./FiberRef.js"
|
|
9
|
+
import { dual, pipe } from "./Function.js"
|
|
10
|
+
import * as core from "./internal/core.js"
|
|
11
|
+
import * as defaultServices from "./internal/defaultServices.js"
|
|
12
|
+
import * as fiberRuntime from "./internal/fiberRuntime.js"
|
|
13
|
+
import * as layer from "./internal/layer.js"
|
|
14
|
+
import * as ref from "./internal/ref.js"
|
|
15
|
+
import type * as Layer from "./Layer.js"
|
|
16
|
+
import type * as Scope from "./Scope.js"
|
|
17
|
+
import type * as SortedSet from "./SortedSet.js"
|
|
18
|
+
import type * as TestAnnotation from "./TestAnnotation.js"
|
|
19
|
+
import * as TestAnnotationMap from "./TestAnnotationMap.js"
|
|
20
|
+
import * as Annotations from "./TestAnnotations.js"
|
|
21
|
+
import * as TestConfig from "./TestConfig.js"
|
|
22
|
+
import * as Live from "./TestLive.js"
|
|
23
|
+
import * as Sized from "./TestSized.js"
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @since 2.0.0
|
|
27
|
+
*/
|
|
28
|
+
export type TestServices =
|
|
29
|
+
| Annotations.TestAnnotations
|
|
30
|
+
| Live.TestLive
|
|
31
|
+
| Sized.TestSized
|
|
32
|
+
| TestConfig.TestConfig
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The default Effect test services.
|
|
36
|
+
*
|
|
37
|
+
* @since 2.0.0
|
|
38
|
+
*/
|
|
39
|
+
export const liveServices: Context.Context<TestServices> = pipe(
|
|
40
|
+
Context.make(Annotations.TestAnnotations, Annotations.make(ref.unsafeMake(TestAnnotationMap.empty()))),
|
|
41
|
+
Context.add(Live.TestLive, Live.make(defaultServices.liveServices)),
|
|
42
|
+
Context.add(Sized.TestSized, Sized.make(100)),
|
|
43
|
+
Context.add(TestConfig.TestConfig, TestConfig.make({ repeats: 100, retries: 100, samples: 200, shrinks: 1000 }))
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @since 2.0.0
|
|
48
|
+
*/
|
|
49
|
+
export const currentServices: FiberRef.FiberRef<Context.Context<TestServices>> = core.fiberRefUnsafeMakeContext(
|
|
50
|
+
liveServices
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Retrieves the `Annotations` service for this test.
|
|
55
|
+
*
|
|
56
|
+
* @since 2.0.0
|
|
57
|
+
*/
|
|
58
|
+
export const annotations = (): Effect.Effect<Annotations.TestAnnotations> => annotationsWith(core.succeed)
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Retrieves the `Annotations` service for this test and uses it to run the
|
|
62
|
+
* specified workflow.
|
|
63
|
+
*
|
|
64
|
+
* @since 2.0.0
|
|
65
|
+
*/
|
|
66
|
+
export const annotationsWith = <A, E, R>(
|
|
67
|
+
f: (annotations: Annotations.TestAnnotations) => Effect.Effect<A, E, R>
|
|
68
|
+
): Effect.Effect<A, E, R> =>
|
|
69
|
+
core.fiberRefGetWith(
|
|
70
|
+
currentServices,
|
|
71
|
+
(services) => f(Context.get(services, Annotations.TestAnnotations))
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Executes the specified workflow with the specified implementation of the
|
|
76
|
+
* annotations service.
|
|
77
|
+
*
|
|
78
|
+
* @since 2.0.0
|
|
79
|
+
*/
|
|
80
|
+
export const withAnnotations = dual<
|
|
81
|
+
(annotations: Annotations.TestAnnotations) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
82
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, annotations: Annotations.TestAnnotations) => Effect.Effect<A, E, R>
|
|
83
|
+
>(2, (effect, annotations) =>
|
|
84
|
+
core.fiberRefLocallyWith(
|
|
85
|
+
currentServices,
|
|
86
|
+
Context.add(Annotations.TestAnnotations, annotations)
|
|
87
|
+
)(effect))
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Sets the implementation of the annotations service to the specified value
|
|
91
|
+
* and restores it to its original value when the scope is closed.
|
|
92
|
+
*
|
|
93
|
+
* @since 2.0.0
|
|
94
|
+
*/
|
|
95
|
+
export const withAnnotationsScoped = (
|
|
96
|
+
annotations: Annotations.TestAnnotations
|
|
97
|
+
): Effect.Effect<void, never, Scope.Scope> =>
|
|
98
|
+
fiberRuntime.fiberRefLocallyScopedWith(
|
|
99
|
+
currentServices,
|
|
100
|
+
Context.add(Annotations.TestAnnotations, annotations)
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Constructs a new `Annotations` service wrapped in a layer.
|
|
105
|
+
*
|
|
106
|
+
* @since 2.0.0
|
|
107
|
+
*/
|
|
108
|
+
export const annotationsLayer = (): Layer.Layer<Annotations.TestAnnotations> =>
|
|
109
|
+
layer.scoped(
|
|
110
|
+
Annotations.TestAnnotations,
|
|
111
|
+
pipe(
|
|
112
|
+
core.sync(() => ref.unsafeMake(TestAnnotationMap.empty())),
|
|
113
|
+
core.map(Annotations.make),
|
|
114
|
+
core.tap(withAnnotationsScoped)
|
|
115
|
+
)
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Accesses an `Annotations` instance in the context and retrieves the
|
|
120
|
+
* annotation of the specified type, or its default value if there is none.
|
|
121
|
+
*
|
|
122
|
+
* @since 2.0.0
|
|
123
|
+
*/
|
|
124
|
+
export const get = <A>(key: TestAnnotation.TestAnnotation<A>): Effect.Effect<A> =>
|
|
125
|
+
annotationsWith((annotations) => annotations.get(key))
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Accesses an `Annotations` instance in the context and appends the
|
|
129
|
+
* specified annotation to the annotation map.
|
|
130
|
+
*
|
|
131
|
+
* @since 2.0.0
|
|
132
|
+
*/
|
|
133
|
+
export const annotate = <A>(key: TestAnnotation.TestAnnotation<A>, value: A): Effect.Effect<void> =>
|
|
134
|
+
annotationsWith((annotations) => annotations.annotate(key, value))
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Returns the set of all fibers in this test.
|
|
138
|
+
*
|
|
139
|
+
* @since 2.0.0
|
|
140
|
+
*/
|
|
141
|
+
export const supervisedFibers = (): Effect.Effect<
|
|
142
|
+
SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>
|
|
143
|
+
> => annotationsWith((annotations) => annotations.supervisedFibers)
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Retrieves the `Live` service for this test and uses it to run the specified
|
|
147
|
+
* workflow.
|
|
148
|
+
*
|
|
149
|
+
* @since 2.0.0
|
|
150
|
+
*/
|
|
151
|
+
export const liveWith = <A, E, R>(f: (live: Live.TestLive) => Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
152
|
+
core.fiberRefGetWith(currentServices, (services) => f(Context.get(services, Live.TestLive)))
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Retrieves the `Live` service for this test.
|
|
156
|
+
*
|
|
157
|
+
* @since 2.0.0
|
|
158
|
+
*/
|
|
159
|
+
export const live: Effect.Effect<Live.TestLive> = liveWith(core.succeed)
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Executes the specified workflow with the specified implementation of the
|
|
163
|
+
* live service.
|
|
164
|
+
*
|
|
165
|
+
* @since 2.0.0
|
|
166
|
+
*/
|
|
167
|
+
export const withLive = dual<
|
|
168
|
+
(live: Live.TestLive) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
169
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, live: Live.TestLive) => Effect.Effect<A, E, R>
|
|
170
|
+
>(2, (effect, live) =>
|
|
171
|
+
core.fiberRefLocallyWith(
|
|
172
|
+
currentServices,
|
|
173
|
+
Context.add(Live.TestLive, live)
|
|
174
|
+
)(effect))
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Sets the implementation of the live service to the specified value and
|
|
178
|
+
* restores it to its original value when the scope is closed.
|
|
179
|
+
*
|
|
180
|
+
* @since 2.0.0
|
|
181
|
+
*/
|
|
182
|
+
export const withLiveScoped = (live: Live.TestLive): Effect.Effect<void, never, Scope.Scope> =>
|
|
183
|
+
fiberRuntime.fiberRefLocallyScopedWith(currentServices, Context.add(Live.TestLive, live))
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Constructs a new `Live` service wrapped in a layer.
|
|
187
|
+
*
|
|
188
|
+
* @since 2.0.0
|
|
189
|
+
*/
|
|
190
|
+
export const liveLayer = (): Layer.Layer<Live.TestLive, never, DefaultServices.DefaultServices> =>
|
|
191
|
+
layer.scoped(
|
|
192
|
+
Live.TestLive,
|
|
193
|
+
pipe(
|
|
194
|
+
core.context<DefaultServices.DefaultServices>(),
|
|
195
|
+
core.map(Live.make),
|
|
196
|
+
core.tap(withLiveScoped)
|
|
197
|
+
)
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Provides a workflow with the "live" default Effect services.
|
|
202
|
+
*
|
|
203
|
+
* @since 2.0.0
|
|
204
|
+
*/
|
|
205
|
+
export const provideLive = <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
206
|
+
liveWith((live) => live.provide(effect))
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Runs a transformation function with the live default Effect services while
|
|
210
|
+
* ensuring that the workflow itself is run with the test services.
|
|
211
|
+
*
|
|
212
|
+
* @since 2.0.0
|
|
213
|
+
*/
|
|
214
|
+
export const provideWithLive = dual<
|
|
215
|
+
<A, E, R, A2, E2, R2>(
|
|
216
|
+
f: (effect: Effect.Effect<A, E, R>) => Effect.Effect<A2, E2, R2>
|
|
217
|
+
) => (self: Effect.Effect<A, E, R>) => Effect.Effect<A2, E | E2, R | R2>,
|
|
218
|
+
<A, E, R, A2, E2, R2>(
|
|
219
|
+
self: Effect.Effect<A, E, R>,
|
|
220
|
+
f: (effect: Effect.Effect<A, E, R>) => Effect.Effect<A2, E2, R2>
|
|
221
|
+
) => Effect.Effect<A2, E | E2, R | R2>
|
|
222
|
+
>(2, (self, f) =>
|
|
223
|
+
core.fiberRefGetWith(
|
|
224
|
+
defaultServices.currentServices,
|
|
225
|
+
(services) => provideLive(f(core.fiberRefLocally(defaultServices.currentServices, services)(self)))
|
|
226
|
+
))
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Retrieves the `Sized` service for this test and uses it to run the
|
|
230
|
+
* specified workflow.
|
|
231
|
+
*
|
|
232
|
+
* @since 2.0.0
|
|
233
|
+
*/
|
|
234
|
+
export const sizedWith = <A, E, R>(f: (sized: Sized.TestSized) => Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
235
|
+
core.fiberRefGetWith(
|
|
236
|
+
currentServices,
|
|
237
|
+
(services) => f(Context.get(services, Sized.TestSized))
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Retrieves the `Sized` service for this test.
|
|
242
|
+
*
|
|
243
|
+
* @since 2.0.0
|
|
244
|
+
*/
|
|
245
|
+
export const sized: Effect.Effect<Sized.TestSized> = sizedWith(core.succeed)
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Executes the specified workflow with the specified implementation of the
|
|
249
|
+
* sized service.
|
|
250
|
+
*
|
|
251
|
+
* @since 2.0.0
|
|
252
|
+
*/
|
|
253
|
+
export const withSized = dual<
|
|
254
|
+
(sized: Sized.TestSized) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
255
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, sized: Sized.TestSized) => Effect.Effect<A, E, R>
|
|
256
|
+
>(2, (effect, sized) =>
|
|
257
|
+
core.fiberRefLocallyWith(
|
|
258
|
+
currentServices,
|
|
259
|
+
Context.add(Sized.TestSized, sized)
|
|
260
|
+
)(effect))
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Sets the implementation of the sized service to the specified value and
|
|
264
|
+
* restores it to its original value when the scope is closed.
|
|
265
|
+
*
|
|
266
|
+
* @since 2.0.0
|
|
267
|
+
*/
|
|
268
|
+
export const withSizedScoped = (sized: Sized.TestSized): Effect.Effect<void, never, Scope.Scope> =>
|
|
269
|
+
fiberRuntime.fiberRefLocallyScopedWith(currentServices, Context.add(Sized.TestSized, sized))
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* @since 2.0.0
|
|
273
|
+
*/
|
|
274
|
+
export const sizedLayer = (size: number): Layer.Layer<Sized.TestSized> =>
|
|
275
|
+
layer.scoped(
|
|
276
|
+
Sized.TestSized,
|
|
277
|
+
pipe(
|
|
278
|
+
fiberRuntime.fiberRefMake(size),
|
|
279
|
+
core.map(Sized.fromFiberRef),
|
|
280
|
+
core.tap(withSizedScoped)
|
|
281
|
+
)
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* @since 2.0.0
|
|
286
|
+
*/
|
|
287
|
+
export const size: Effect.Effect<number> = sizedWith((sized) => sized.size)
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* @since 2.0.0
|
|
291
|
+
*/
|
|
292
|
+
export const withSize = dual<
|
|
293
|
+
(size: number) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
294
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, size: number) => Effect.Effect<A, E, R>
|
|
295
|
+
>(2, (effect, size) => sizedWith((sized) => sized.withSize(size)(effect)))
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Retrieves the `TestConfig` service for this test and uses it to run the
|
|
299
|
+
* specified workflow.
|
|
300
|
+
*
|
|
301
|
+
* @since 2.0.0
|
|
302
|
+
*/
|
|
303
|
+
export const testConfigWith = <A, E, R>(
|
|
304
|
+
f: (config: TestConfig.TestConfig) => Effect.Effect<A, E, R>
|
|
305
|
+
): Effect.Effect<A, E, R> =>
|
|
306
|
+
core.fiberRefGetWith(
|
|
307
|
+
currentServices,
|
|
308
|
+
(services) => f(Context.get(services, TestConfig.TestConfig))
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Retrieves the `TestConfig` service for this test.
|
|
313
|
+
*
|
|
314
|
+
* @since 2.0.0
|
|
315
|
+
*/
|
|
316
|
+
export const testConfig: Effect.Effect<TestConfig.TestConfig> = testConfigWith(core.succeed)
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Executes the specified workflow with the specified implementation of the
|
|
320
|
+
* config service.
|
|
321
|
+
*
|
|
322
|
+
* @since 2.0.0
|
|
323
|
+
*/
|
|
324
|
+
export const withTestConfig = dual<
|
|
325
|
+
(config: TestConfig.TestConfig) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
326
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, config: TestConfig.TestConfig) => Effect.Effect<A, E, R>
|
|
327
|
+
>(2, (effect, config) =>
|
|
328
|
+
core.fiberRefLocallyWith(
|
|
329
|
+
currentServices,
|
|
330
|
+
Context.add(TestConfig.TestConfig, config)
|
|
331
|
+
)(effect))
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Sets the implementation of the config service to the specified value and
|
|
335
|
+
* restores it to its original value when the scope is closed.
|
|
336
|
+
*
|
|
337
|
+
* @since 2.0.0
|
|
338
|
+
*/
|
|
339
|
+
export const withTestConfigScoped = (config: TestConfig.TestConfig): Effect.Effect<void, never, Scope.Scope> =>
|
|
340
|
+
fiberRuntime.fiberRefLocallyScopedWith(currentServices, Context.add(TestConfig.TestConfig, config))
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Constructs a new `TestConfig` service with the specified settings.
|
|
344
|
+
*
|
|
345
|
+
* @since 2.0.0
|
|
346
|
+
*/
|
|
347
|
+
export const testConfigLayer = (params: {
|
|
348
|
+
readonly repeats: number
|
|
349
|
+
readonly retries: number
|
|
350
|
+
readonly samples: number
|
|
351
|
+
readonly shrinks: number
|
|
352
|
+
}): Layer.Layer<TestConfig.TestConfig> =>
|
|
353
|
+
layer.scoped(
|
|
354
|
+
TestConfig.TestConfig,
|
|
355
|
+
Effect.suspend(() => {
|
|
356
|
+
const testConfig = TestConfig.make(params)
|
|
357
|
+
return pipe(
|
|
358
|
+
withTestConfigScoped(testConfig),
|
|
359
|
+
core.as(testConfig)
|
|
360
|
+
)
|
|
361
|
+
})
|
|
362
|
+
)
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* The number of times to repeat tests to ensure they are stable.
|
|
366
|
+
*
|
|
367
|
+
* @since 2.0.0
|
|
368
|
+
*/
|
|
369
|
+
export const repeats: Effect.Effect<number> = testConfigWith((config) => core.succeed(config.repeats))
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* The number of times to retry flaky tests.
|
|
373
|
+
*
|
|
374
|
+
* @since 2.0.0
|
|
375
|
+
*/
|
|
376
|
+
export const retries: Effect.Effect<number> = testConfigWith((config) => core.succeed(config.retries))
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* The number of sufficient samples to check for a random variable.
|
|
380
|
+
*
|
|
381
|
+
* @since 2.0.0
|
|
382
|
+
*/
|
|
383
|
+
export const samples: Effect.Effect<number> = testConfigWith((config) => core.succeed(config.samples))
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* The maximum number of shrinkings to minimize large failures.
|
|
387
|
+
*
|
|
388
|
+
* @since 2.0.0
|
|
389
|
+
*/
|
|
390
|
+
export const shrinks: Effect.Effect<number> = testConfigWith((config) => core.succeed(config.shrinks))
|
package/src/TestSized.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Context from "./Context.js"
|
|
5
|
+
import type * as Effect from "./Effect.js"
|
|
6
|
+
import type * as FiberRef from "./FiberRef.js"
|
|
7
|
+
import * as core from "./internal/core.js"
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @since 2.0.0
|
|
11
|
+
*/
|
|
12
|
+
export const TestSizedTypeId: unique symbol = Symbol.for("effect/TestSized")
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @since 2.0.0
|
|
16
|
+
*/
|
|
17
|
+
export type TestSizedTypeId = typeof TestSizedTypeId
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @since 2.0.0
|
|
21
|
+
*/
|
|
22
|
+
export interface TestSized {
|
|
23
|
+
readonly [TestSizedTypeId]: TestSizedTypeId
|
|
24
|
+
readonly fiberRef: FiberRef.FiberRef<number>
|
|
25
|
+
readonly size: Effect.Effect<number>
|
|
26
|
+
withSize(size: number): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @since 2.0.0
|
|
31
|
+
*/
|
|
32
|
+
export const TestSized: Context.Tag<TestSized, TestSized> = Context.GenericTag("effect/TestSized")
|
|
33
|
+
|
|
34
|
+
/** @internal */
|
|
35
|
+
class SizedImpl implements TestSized {
|
|
36
|
+
readonly [TestSizedTypeId]: TestSizedTypeId = TestSizedTypeId
|
|
37
|
+
constructor(readonly fiberRef: FiberRef.FiberRef<number>) {}
|
|
38
|
+
get size(): Effect.Effect<number> {
|
|
39
|
+
return core.fiberRefGet(this.fiberRef)
|
|
40
|
+
}
|
|
41
|
+
withSize(size: number) {
|
|
42
|
+
return <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
43
|
+
core.fiberRefLocally(this.fiberRef, size)(effect)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @since 2.0.0
|
|
49
|
+
*/
|
|
50
|
+
export const make = (size: number): TestSized => new SizedImpl(core.fiberRefUnsafeMake(size))
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @since 2.0.0
|
|
54
|
+
*/
|
|
55
|
+
export const fromFiberRef = (fiberRef: FiberRef.FiberRef<number>): TestSized => new SizedImpl(fiberRef)
|
package/src/Tracer.ts
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Context from "./Context.js"
|
|
5
|
+
import type * as Effect from "./Effect.js"
|
|
6
|
+
import type * as Exit from "./Exit.js"
|
|
7
|
+
import type * as Fiber from "./Fiber.js"
|
|
8
|
+
import type { LazyArg } from "./Function.js"
|
|
9
|
+
import * as defaultServices from "./internal/defaultServices.js"
|
|
10
|
+
import * as internal from "./internal/tracer.js"
|
|
11
|
+
import type * as Option from "./Option.js"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @since 2.0.0
|
|
15
|
+
*/
|
|
16
|
+
export const TracerTypeId: unique symbol = internal.TracerTypeId
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @since 2.0.0
|
|
20
|
+
*/
|
|
21
|
+
export type TracerTypeId = typeof TracerTypeId
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @since 2.0.0
|
|
25
|
+
*/
|
|
26
|
+
export interface Tracer {
|
|
27
|
+
readonly [TracerTypeId]: TracerTypeId
|
|
28
|
+
span(
|
|
29
|
+
name: string,
|
|
30
|
+
parent: Option.Option<AnySpan>,
|
|
31
|
+
context: Context.Context<never>,
|
|
32
|
+
links: ReadonlyArray<SpanLink>,
|
|
33
|
+
startTime: bigint,
|
|
34
|
+
kind: SpanKind,
|
|
35
|
+
options?: SpanOptions
|
|
36
|
+
): Span
|
|
37
|
+
context<X>(f: () => X, fiber: Fiber.RuntimeFiber<any, any>): X
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @since 2.0.0
|
|
42
|
+
* @category models
|
|
43
|
+
*/
|
|
44
|
+
export type SpanStatus = {
|
|
45
|
+
_tag: "Started"
|
|
46
|
+
startTime: bigint
|
|
47
|
+
} | {
|
|
48
|
+
_tag: "Ended"
|
|
49
|
+
startTime: bigint
|
|
50
|
+
endTime: bigint
|
|
51
|
+
exit: Exit.Exit<unknown, unknown>
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @since 2.0.0
|
|
56
|
+
* @category models
|
|
57
|
+
*/
|
|
58
|
+
export type AnySpan = Span | ExternalSpan
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @since 2.0.0
|
|
62
|
+
* @category tags
|
|
63
|
+
*/
|
|
64
|
+
export interface ParentSpan {
|
|
65
|
+
readonly _: unique symbol
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @since 2.0.0
|
|
70
|
+
* @category tags
|
|
71
|
+
*/
|
|
72
|
+
export const ParentSpan: Context.Tag<ParentSpan, AnySpan> = internal.spanTag
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @since 2.0.0
|
|
76
|
+
* @category models
|
|
77
|
+
*/
|
|
78
|
+
export interface ExternalSpan {
|
|
79
|
+
readonly _tag: "ExternalSpan"
|
|
80
|
+
readonly spanId: string
|
|
81
|
+
readonly traceId: string
|
|
82
|
+
readonly sampled: boolean
|
|
83
|
+
readonly context: Context.Context<never>
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @since 3.1.0
|
|
88
|
+
* @category models
|
|
89
|
+
*/
|
|
90
|
+
export interface SpanOptions {
|
|
91
|
+
readonly attributes?: Record<string, unknown> | undefined
|
|
92
|
+
readonly links?: ReadonlyArray<SpanLink> | undefined
|
|
93
|
+
readonly parent?: AnySpan | undefined
|
|
94
|
+
readonly root?: boolean | undefined
|
|
95
|
+
readonly context?: Context.Context<never> | undefined
|
|
96
|
+
readonly kind?: SpanKind | undefined
|
|
97
|
+
readonly captureStackTrace?: boolean | LazyArg<string | undefined> | undefined
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @since 3.1.0
|
|
102
|
+
* @category models
|
|
103
|
+
*/
|
|
104
|
+
export type SpanKind = "internal" | "server" | "client" | "producer" | "consumer"
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @since 2.0.0
|
|
108
|
+
* @category models
|
|
109
|
+
*/
|
|
110
|
+
export interface Span {
|
|
111
|
+
readonly _tag: "Span"
|
|
112
|
+
readonly name: string
|
|
113
|
+
readonly spanId: string
|
|
114
|
+
readonly traceId: string
|
|
115
|
+
readonly parent: Option.Option<AnySpan>
|
|
116
|
+
readonly context: Context.Context<never>
|
|
117
|
+
readonly status: SpanStatus
|
|
118
|
+
readonly attributes: ReadonlyMap<string, unknown>
|
|
119
|
+
readonly links: ReadonlyArray<SpanLink>
|
|
120
|
+
readonly sampled: boolean
|
|
121
|
+
readonly kind: SpanKind
|
|
122
|
+
end(endTime: bigint, exit: Exit.Exit<unknown, unknown>): void
|
|
123
|
+
attribute(key: string, value: unknown): void
|
|
124
|
+
event(name: string, startTime: bigint, attributes?: Record<string, unknown>): void
|
|
125
|
+
addLinks(links: ReadonlyArray<SpanLink>): void
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @since 2.0.0
|
|
130
|
+
* @category models
|
|
131
|
+
*/
|
|
132
|
+
export interface SpanLink {
|
|
133
|
+
readonly _tag: "SpanLink"
|
|
134
|
+
readonly span: AnySpan
|
|
135
|
+
readonly attributes: Readonly<Record<string, unknown>>
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @since 2.0.0
|
|
140
|
+
* @category tags
|
|
141
|
+
*/
|
|
142
|
+
export const Tracer: Context.Tag<Tracer, Tracer> = internal.tracerTag
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @since 2.0.0
|
|
146
|
+
* @category constructors
|
|
147
|
+
*/
|
|
148
|
+
export const make: (options: Omit<Tracer, typeof TracerTypeId>) => Tracer = internal.make
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* @since 2.0.0
|
|
152
|
+
* @category constructors
|
|
153
|
+
*/
|
|
154
|
+
export const externalSpan: (
|
|
155
|
+
options: {
|
|
156
|
+
readonly spanId: string
|
|
157
|
+
readonly traceId: string
|
|
158
|
+
readonly sampled?: boolean | undefined
|
|
159
|
+
readonly context?: Context.Context<never> | undefined
|
|
160
|
+
}
|
|
161
|
+
) => ExternalSpan = internal.externalSpan
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* @since 2.0.0
|
|
165
|
+
* @category constructors
|
|
166
|
+
*/
|
|
167
|
+
export const tracerWith: <A, E, R>(f: (tracer: Tracer) => Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> =
|
|
168
|
+
defaultServices.tracerWith
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @since 3.12.0
|
|
172
|
+
* @category annotations
|
|
173
|
+
*/
|
|
174
|
+
export interface DisablePropagation {
|
|
175
|
+
readonly _: unique symbol
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* @since 3.12.0
|
|
180
|
+
* @category annotations
|
|
181
|
+
*/
|
|
182
|
+
export const DisablePropagation: Context.Reference<DisablePropagation, boolean> = internal.DisablePropagation
|