@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
package/src/Pretty.ts
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 3.10.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Arr from "./Array.js"
|
|
5
|
+
import * as Inspectable from "./Inspectable.js"
|
|
6
|
+
import * as errors_ from "./internal/schema/errors.js"
|
|
7
|
+
import * as util_ from "./internal/schema/util.js"
|
|
8
|
+
import * as Option from "./Option.js"
|
|
9
|
+
import * as ParseResult from "./ParseResult.js"
|
|
10
|
+
import type * as Schema from "./Schema.js"
|
|
11
|
+
import * as AST from "./SchemaAST.js"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @category model
|
|
15
|
+
* @since 3.10.0
|
|
16
|
+
*/
|
|
17
|
+
export interface Pretty<To> {
|
|
18
|
+
(a: To): string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @category annotations
|
|
23
|
+
* @since 3.10.0
|
|
24
|
+
*/
|
|
25
|
+
export type PrettyAnnotation<A, TypeParameters extends ReadonlyArray<any> = readonly []> = (
|
|
26
|
+
...pretties: { readonly [K in keyof TypeParameters]: Pretty<TypeParameters[K]> }
|
|
27
|
+
) => Pretty<A>
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @category prettify
|
|
31
|
+
* @since 3.10.0
|
|
32
|
+
*/
|
|
33
|
+
export const make = <A, I, R>(schema: Schema.Schema<A, I, R>): (a: A) => string => compile(schema.ast, [])
|
|
34
|
+
|
|
35
|
+
const getPrettyAnnotation = AST.getAnnotation<PrettyAnnotation<any, any>>(AST.PrettyAnnotationId)
|
|
36
|
+
|
|
37
|
+
const getMatcher = (defaultPretty: Pretty<any>) => (ast: AST.AST): Pretty<any> =>
|
|
38
|
+
Option.match(getPrettyAnnotation(ast), {
|
|
39
|
+
onNone: () => defaultPretty,
|
|
40
|
+
onSome: (handler) => handler()
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
const toString = getMatcher((a) => String(a))
|
|
44
|
+
|
|
45
|
+
const stringify = getMatcher((a) => JSON.stringify(a))
|
|
46
|
+
|
|
47
|
+
const formatUnknown = getMatcher(Inspectable.formatUnknown)
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @since 3.10.0
|
|
51
|
+
*/
|
|
52
|
+
export const match: AST.Match<Pretty<any>> = {
|
|
53
|
+
"Declaration": (ast, go, path) => {
|
|
54
|
+
const annotation = getPrettyAnnotation(ast)
|
|
55
|
+
if (Option.isSome(annotation)) {
|
|
56
|
+
return annotation.value(...ast.typeParameters.map((tp) => go(tp, path)))
|
|
57
|
+
}
|
|
58
|
+
throw new Error(errors_.getPrettyMissingAnnotationErrorMessage(path, ast))
|
|
59
|
+
},
|
|
60
|
+
"VoidKeyword": getMatcher(() => "void(0)"),
|
|
61
|
+
"NeverKeyword": getMatcher(() => {
|
|
62
|
+
throw new Error(errors_.getPrettyNeverErrorMessage)
|
|
63
|
+
}),
|
|
64
|
+
"Literal": getMatcher((literal: AST.LiteralValue): string =>
|
|
65
|
+
typeof literal === "bigint" ?
|
|
66
|
+
`${String(literal)}n` :
|
|
67
|
+
JSON.stringify(literal)
|
|
68
|
+
),
|
|
69
|
+
"SymbolKeyword": toString,
|
|
70
|
+
"UniqueSymbol": toString,
|
|
71
|
+
"TemplateLiteral": stringify,
|
|
72
|
+
"UndefinedKeyword": toString,
|
|
73
|
+
"UnknownKeyword": formatUnknown,
|
|
74
|
+
"AnyKeyword": formatUnknown,
|
|
75
|
+
"ObjectKeyword": formatUnknown,
|
|
76
|
+
"StringKeyword": stringify,
|
|
77
|
+
"NumberKeyword": toString,
|
|
78
|
+
"BooleanKeyword": toString,
|
|
79
|
+
"BigIntKeyword": getMatcher((a) => `${String(a)}n`),
|
|
80
|
+
"Enums": stringify,
|
|
81
|
+
"TupleType": (ast, go, path) => {
|
|
82
|
+
const hook = getPrettyAnnotation(ast)
|
|
83
|
+
if (Option.isSome(hook)) {
|
|
84
|
+
return hook.value()
|
|
85
|
+
}
|
|
86
|
+
const elements = ast.elements.map((e, i) => go(e.type, path.concat(i)))
|
|
87
|
+
const rest = ast.rest.map((annotatedAST) => go(annotatedAST.type, path))
|
|
88
|
+
return (input: ReadonlyArray<unknown>) => {
|
|
89
|
+
const output: Array<string> = []
|
|
90
|
+
let i = 0
|
|
91
|
+
// ---------------------------------------------
|
|
92
|
+
// handle elements
|
|
93
|
+
// ---------------------------------------------
|
|
94
|
+
for (; i < elements.length; i++) {
|
|
95
|
+
if (input.length < i + 1) {
|
|
96
|
+
if (ast.elements[i].isOptional) {
|
|
97
|
+
continue
|
|
98
|
+
}
|
|
99
|
+
} else {
|
|
100
|
+
output.push(elements[i](input[i]))
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// ---------------------------------------------
|
|
104
|
+
// handle rest element
|
|
105
|
+
// ---------------------------------------------
|
|
106
|
+
if (Arr.isNonEmptyReadonlyArray(rest)) {
|
|
107
|
+
const [head, ...tail] = rest
|
|
108
|
+
for (; i < input.length - tail.length; i++) {
|
|
109
|
+
output.push(head(input[i]))
|
|
110
|
+
}
|
|
111
|
+
// ---------------------------------------------
|
|
112
|
+
// handle post rest elements
|
|
113
|
+
// ---------------------------------------------
|
|
114
|
+
for (let j = 0; j < tail.length; j++) {
|
|
115
|
+
i += j
|
|
116
|
+
output.push(tail[j](input[i]))
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return "[" + output.join(", ") + "]"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"TypeLiteral": (ast, go, path) => {
|
|
124
|
+
const hook = getPrettyAnnotation(ast)
|
|
125
|
+
if (Option.isSome(hook)) {
|
|
126
|
+
return hook.value()
|
|
127
|
+
}
|
|
128
|
+
const propertySignaturesTypes = ast.propertySignatures.map((ps) => go(ps.type, path.concat(ps.name)))
|
|
129
|
+
const indexSignatureTypes = ast.indexSignatures.map((is) => go(is.type, path))
|
|
130
|
+
const expectedKeys: any = {}
|
|
131
|
+
for (let i = 0; i < propertySignaturesTypes.length; i++) {
|
|
132
|
+
expectedKeys[ast.propertySignatures[i].name] = null
|
|
133
|
+
}
|
|
134
|
+
return (input: { readonly [x: PropertyKey]: unknown }) => {
|
|
135
|
+
const output: Array<string> = []
|
|
136
|
+
// ---------------------------------------------
|
|
137
|
+
// handle property signatures
|
|
138
|
+
// ---------------------------------------------
|
|
139
|
+
for (let i = 0; i < propertySignaturesTypes.length; i++) {
|
|
140
|
+
const ps = ast.propertySignatures[i]
|
|
141
|
+
const name = ps.name
|
|
142
|
+
if (ps.isOptional && !Object.prototype.hasOwnProperty.call(input, name)) {
|
|
143
|
+
continue
|
|
144
|
+
}
|
|
145
|
+
output.push(
|
|
146
|
+
`${Inspectable.formatPropertyKey(name)}: ${propertySignaturesTypes[i](input[name])}`
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
// ---------------------------------------------
|
|
150
|
+
// handle index signatures
|
|
151
|
+
// ---------------------------------------------
|
|
152
|
+
if (indexSignatureTypes.length > 0) {
|
|
153
|
+
for (let i = 0; i < indexSignatureTypes.length; i++) {
|
|
154
|
+
const type = indexSignatureTypes[i]
|
|
155
|
+
const keys = util_.getKeysForIndexSignature(input, ast.indexSignatures[i].parameter)
|
|
156
|
+
for (const key of keys) {
|
|
157
|
+
if (Object.prototype.hasOwnProperty.call(expectedKeys, key)) {
|
|
158
|
+
continue
|
|
159
|
+
}
|
|
160
|
+
output.push(`${Inspectable.formatPropertyKey(key)}: ${type(input[key])}`)
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return Arr.isNonEmptyReadonlyArray(output) ? "{ " + output.join(", ") + " }" : "{}"
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"Union": (ast, go, path) => {
|
|
169
|
+
const hook = getPrettyAnnotation(ast)
|
|
170
|
+
if (Option.isSome(hook)) {
|
|
171
|
+
return hook.value()
|
|
172
|
+
}
|
|
173
|
+
const types = ast.types.map((ast) => [ParseResult.is({ ast } as any), go(ast, path)] as const)
|
|
174
|
+
return (a) => {
|
|
175
|
+
const index = types.findIndex(([is]) => is(a))
|
|
176
|
+
if (index === -1) {
|
|
177
|
+
throw new Error(errors_.getPrettyNoMatchingSchemaErrorMessage(a, path, ast))
|
|
178
|
+
}
|
|
179
|
+
return types[index][1](a)
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
"Suspend": (ast, go, path) => {
|
|
183
|
+
return Option.match(getPrettyAnnotation(ast), {
|
|
184
|
+
onNone: () => {
|
|
185
|
+
const get = util_.memoizeThunk(() => go(ast.f(), path))
|
|
186
|
+
return (a) => get()(a)
|
|
187
|
+
},
|
|
188
|
+
onSome: (handler) => handler()
|
|
189
|
+
})
|
|
190
|
+
},
|
|
191
|
+
"Refinement": (ast, go, path) => {
|
|
192
|
+
return Option.match(getPrettyAnnotation(ast), {
|
|
193
|
+
onNone: () => go(ast.from, path),
|
|
194
|
+
onSome: (handler) => handler()
|
|
195
|
+
})
|
|
196
|
+
},
|
|
197
|
+
"Transformation": (ast, go, path) => {
|
|
198
|
+
return Option.match(getPrettyAnnotation(ast), {
|
|
199
|
+
onNone: () => go(ast.to, path),
|
|
200
|
+
onSome: (handler) => handler()
|
|
201
|
+
})
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const compile = AST.getCompiler(match)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @since 2.0.0
|
|
7
|
+
* @category symbols
|
|
8
|
+
*/
|
|
9
|
+
export const symbol: unique symbol = Symbol.for("effect/PrimaryKey")
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @since 2.0.0
|
|
13
|
+
* @category models
|
|
14
|
+
*/
|
|
15
|
+
export interface PrimaryKey {
|
|
16
|
+
[symbol](): string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @since 2.0.0
|
|
21
|
+
* @category accessors
|
|
22
|
+
*/
|
|
23
|
+
export const value = (self: PrimaryKey): string => self[symbol]()
|
package/src/PubSub.ts
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Effect from "./Effect.js"
|
|
5
|
+
import * as internal from "./internal/pubsub.js"
|
|
6
|
+
import type { Pipeable } from "./Pipeable.js"
|
|
7
|
+
import type * as Queue from "./Queue.js"
|
|
8
|
+
import type * as Scope from "./Scope.js"
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A `PubSub<A>` is an asynchronous message hub into which publishers can publish
|
|
12
|
+
* messages of type `A` and subscribers can subscribe to take messages of type
|
|
13
|
+
* `A`.
|
|
14
|
+
*
|
|
15
|
+
* @since 2.0.0
|
|
16
|
+
* @category models
|
|
17
|
+
*/
|
|
18
|
+
export interface PubSub<in out A> extends Queue.Enqueue<A>, Pipeable {
|
|
19
|
+
/**
|
|
20
|
+
* Publishes a message to the `PubSub`, returning whether the message was published
|
|
21
|
+
* to the `PubSub`.
|
|
22
|
+
*/
|
|
23
|
+
publish(value: A): Effect.Effect<boolean>
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Publishes all of the specified messages to the `PubSub`, returning whether they
|
|
27
|
+
* were published to the `PubSub`.
|
|
28
|
+
*/
|
|
29
|
+
publishAll(elements: Iterable<A>): Effect.Effect<boolean>
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Subscribes to receive messages from the `PubSub`. The resulting subscription can
|
|
33
|
+
* be evaluated multiple times within the scope to take a message from the `PubSub`
|
|
34
|
+
* each time.
|
|
35
|
+
*/
|
|
36
|
+
readonly subscribe: Effect.Effect<Queue.Dequeue<A>, never, Scope.Scope>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Creates a bounded `PubSub` with the back pressure strategy. The `PubSub` will retain
|
|
41
|
+
* messages until they have been taken by all subscribers, applying back
|
|
42
|
+
* pressure to publishers if the `PubSub` is at capacity.
|
|
43
|
+
*
|
|
44
|
+
* For best performance use capacities that are powers of two.
|
|
45
|
+
*
|
|
46
|
+
* @since 2.0.0
|
|
47
|
+
* @category constructors
|
|
48
|
+
*/
|
|
49
|
+
export const bounded: <A>(
|
|
50
|
+
capacity: number | { readonly capacity: number; readonly replay?: number | undefined }
|
|
51
|
+
) => Effect.Effect<PubSub<A>> = internal.bounded
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Creates a bounded `PubSub` with the dropping strategy. The `PubSub` will drop new
|
|
55
|
+
* messages if the `PubSub` is at capacity.
|
|
56
|
+
*
|
|
57
|
+
* For best performance use capacities that are powers of two.
|
|
58
|
+
*
|
|
59
|
+
* @since 2.0.0
|
|
60
|
+
* @category constructors
|
|
61
|
+
*/
|
|
62
|
+
export const dropping: <A>(
|
|
63
|
+
capacity: number | { readonly capacity: number; readonly replay?: number | undefined }
|
|
64
|
+
) => Effect.Effect<PubSub<A>> = internal.dropping
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Creates a bounded `PubSub` with the sliding strategy. The `PubSub` will add new
|
|
68
|
+
* messages and drop old messages if the `PubSub` is at capacity.
|
|
69
|
+
*
|
|
70
|
+
* For best performance use capacities that are powers of two.
|
|
71
|
+
*
|
|
72
|
+
* @since 2.0.0
|
|
73
|
+
* @category constructors
|
|
74
|
+
*/
|
|
75
|
+
export const sliding: <A>(
|
|
76
|
+
capacity: number | { readonly capacity: number; readonly replay?: number | undefined }
|
|
77
|
+
) => Effect.Effect<PubSub<A>> = internal.sliding
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Creates an unbounded `PubSub`.
|
|
81
|
+
*
|
|
82
|
+
* @since 2.0.0
|
|
83
|
+
* @category constructors
|
|
84
|
+
*/
|
|
85
|
+
export const unbounded: <A>(options?: { readonly replay?: number | undefined }) => Effect.Effect<PubSub<A>> =
|
|
86
|
+
internal.unbounded
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Returns the number of elements the queue can hold.
|
|
90
|
+
*
|
|
91
|
+
* @since 2.0.0
|
|
92
|
+
* @category getters
|
|
93
|
+
*/
|
|
94
|
+
export const capacity: <A>(self: PubSub<A>) => number = internal.capacity
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Retrieves the size of the queue, which is equal to the number of elements
|
|
98
|
+
* in the queue. This may be negative if fibers are suspended waiting for
|
|
99
|
+
* elements to be added to the queue.
|
|
100
|
+
*
|
|
101
|
+
* @since 2.0.0
|
|
102
|
+
* @category getters
|
|
103
|
+
*/
|
|
104
|
+
export const size: <A>(self: PubSub<A>) => Effect.Effect<number> = internal.size
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Returns `true` if the `Queue` contains at least one element, `false`
|
|
108
|
+
* otherwise.
|
|
109
|
+
*
|
|
110
|
+
* @since 2.0.0
|
|
111
|
+
* @category getters
|
|
112
|
+
*/
|
|
113
|
+
export const isFull: <A>(self: PubSub<A>) => Effect.Effect<boolean> = internal.isFull
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Returns `true` if the `Queue` contains zero elements, `false` otherwise.
|
|
117
|
+
*
|
|
118
|
+
* @since 2.0.0
|
|
119
|
+
* @category getters
|
|
120
|
+
*/
|
|
121
|
+
export const isEmpty: <A>(self: PubSub<A>) => Effect.Effect<boolean> = internal.isEmpty
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Interrupts any fibers that are suspended on `offer` or `take`. Future calls
|
|
125
|
+
* to `offer*` and `take*` will be interrupted immediately.
|
|
126
|
+
*
|
|
127
|
+
* @since 2.0.0
|
|
128
|
+
* @category utils
|
|
129
|
+
*/
|
|
130
|
+
export const shutdown: <A>(self: PubSub<A>) => Effect.Effect<void> = internal.shutdown
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Returns `true` if `shutdown` has been called, otherwise returns `false`.
|
|
134
|
+
*
|
|
135
|
+
* @since 2.0.0
|
|
136
|
+
* @category getters
|
|
137
|
+
*/
|
|
138
|
+
export const isShutdown: <A>(self: PubSub<A>) => Effect.Effect<boolean> = internal.isShutdown
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Waits until the queue is shutdown. The `Effect` returned by this method will
|
|
142
|
+
* not resume until the queue has been shutdown. If the queue is already
|
|
143
|
+
* shutdown, the `Effect` will resume right away.
|
|
144
|
+
*
|
|
145
|
+
* @since 2.0.0
|
|
146
|
+
* @category utils
|
|
147
|
+
*/
|
|
148
|
+
export const awaitShutdown: <A>(self: PubSub<A>) => Effect.Effect<void> = internal.awaitShutdown
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Publishes a message to the `PubSub`, returning whether the message was published
|
|
152
|
+
* to the `PubSub`.
|
|
153
|
+
*
|
|
154
|
+
* @since 2.0.0
|
|
155
|
+
* @category utils
|
|
156
|
+
*/
|
|
157
|
+
export const publish: {
|
|
158
|
+
<A>(value: A): (self: PubSub<A>) => Effect.Effect<boolean>
|
|
159
|
+
<A>(self: PubSub<A>, value: A): Effect.Effect<boolean>
|
|
160
|
+
} = internal.publish
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Publishes all of the specified messages to the `PubSub`, returning whether they
|
|
164
|
+
* were published to the `PubSub`.
|
|
165
|
+
*
|
|
166
|
+
* @since 2.0.0
|
|
167
|
+
* @category utils
|
|
168
|
+
*/
|
|
169
|
+
export const publishAll: {
|
|
170
|
+
<A>(elements: Iterable<A>): (self: PubSub<A>) => Effect.Effect<boolean>
|
|
171
|
+
<A>(self: PubSub<A>, elements: Iterable<A>): Effect.Effect<boolean>
|
|
172
|
+
} = internal.publishAll
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Subscribes to receive messages from the `PubSub`. The resulting subscription can
|
|
176
|
+
* be evaluated multiple times within the scope to take a message from the `PubSub`
|
|
177
|
+
* each time.
|
|
178
|
+
*
|
|
179
|
+
* @since 2.0.0
|
|
180
|
+
* @category utils
|
|
181
|
+
*/
|
|
182
|
+
export const subscribe: <A>(self: PubSub<A>) => Effect.Effect<Queue.Dequeue<A>, never, Scope.Scope> = internal.subscribe
|