effect 4.0.0 → 4.0.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/ai-docs/package.json +2 -2
- package/ai-docs/tsconfig.json +2 -1
- package/dist/Array.d.ts +339 -0
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +143 -3
- package/dist/Array.js.map +1 -1
- package/dist/BigDecimal.d.ts +88 -0
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +44 -0
- package/dist/BigDecimal.js.map +1 -1
- package/dist/BigInt.d.ts +68 -0
- package/dist/BigInt.d.ts.map +1 -1
- package/dist/BigInt.js +36 -0
- package/dist/BigInt.js.map +1 -1
- package/dist/Boolean.d.ts +34 -0
- package/dist/Boolean.d.ts.map +1 -1
- package/dist/Boolean.js +18 -0
- package/dist/Boolean.js.map +1 -1
- package/dist/Brand.d.ts +9 -0
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +6 -0
- package/dist/Brand.js.map +1 -1
- package/dist/ByteSize.d.ts +86 -0
- package/dist/ByteSize.d.ts.map +1 -1
- package/dist/ByteSize.js +51 -0
- package/dist/ByteSize.js.map +1 -1
- package/dist/Cache.d.ts +38 -1
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +47 -23
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +82 -0
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Cause.js +61 -1
- package/dist/Cause.js.map +1 -1
- package/dist/Channel.d.ts +327 -4
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +168 -8
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts +11 -0
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js +6 -0
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +192 -0
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +78 -0
- package/dist/Chunk.js.map +1 -1
- package/dist/Clock.d.ts +7 -0
- package/dist/Clock.d.ts.map +1 -1
- package/dist/Clock.js +5 -0
- package/dist/Clock.js.map +1 -1
- package/dist/Combiner.d.ts +10 -0
- package/dist/Combiner.d.ts.map +1 -1
- package/dist/Combiner.js +8 -0
- package/dist/Combiner.js.map +1 -1
- package/dist/Config.d.ts +52 -12
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +55 -5
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +28 -0
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +19 -0
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Console.d.ts +22 -0
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +20 -0
- package/dist/Console.js.map +1 -1
- package/dist/Context.d.ts +50 -0
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +21 -0
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +16 -0
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +26 -1
- package/dist/Cron.js.map +1 -1
- package/dist/Crypto.d.ts +5 -0
- package/dist/Crypto.d.ts.map +1 -1
- package/dist/Crypto.js +3 -0
- package/dist/Crypto.js.map +1 -1
- package/dist/Data.d.ts +13 -0
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js +5 -0
- package/dist/Data.js.map +1 -1
- package/dist/DateTime.d.ts +171 -0
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +89 -0
- package/dist/DateTime.js.map +1 -1
- package/dist/Deferred.d.ts +51 -0
- package/dist/Deferred.d.ts.map +1 -1
- package/dist/Deferred.js +22 -0
- package/dist/Deferred.js.map +1 -1
- package/dist/Differ.d.ts +2 -0
- package/dist/Differ.d.ts.map +1 -1
- package/dist/Differ.js +1 -0
- package/dist/Duration.d.ts +90 -0
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +53 -0
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +677 -22
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +251 -10
- package/dist/Effect.js.map +1 -1
- package/dist/Effectable.d.ts +4 -0
- package/dist/Effectable.d.ts.map +1 -1
- package/dist/Effectable.js +3 -0
- package/dist/Effectable.js.map +1 -1
- package/dist/Equal.d.ts +8 -0
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +9 -1
- package/dist/Equal.js.map +1 -1
- package/dist/Equivalence.d.ts +21 -0
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +16 -0
- package/dist/Equivalence.js.map +1 -1
- package/dist/ErrorReporter.d.ts +36 -0
- package/dist/ErrorReporter.d.ts.map +1 -1
- package/dist/ErrorReporter.js +11 -0
- package/dist/ErrorReporter.js.map +1 -1
- package/dist/ExecutionPlan.d.ts +49 -8
- package/dist/ExecutionPlan.d.ts.map +1 -1
- package/dist/ExecutionPlan.js +7 -0
- package/dist/ExecutionPlan.js.map +1 -1
- package/dist/Exit.d.ts +40 -0
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +27 -0
- package/dist/Exit.js.map +1 -1
- package/dist/Fiber.d.ts +20 -0
- package/dist/Fiber.d.ts.map +1 -1
- package/dist/Fiber.js +11 -0
- package/dist/Fiber.js.map +1 -1
- package/dist/FiberHandle.d.ts +21 -0
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +21 -4
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +35 -0
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +19 -0
- package/dist/FiberMap.js.map +1 -1
- package/dist/FiberSet.d.ts +20 -0
- package/dist/FiberSet.d.ts.map +1 -1
- package/dist/FiberSet.js +14 -0
- package/dist/FiberSet.js.map +1 -1
- package/dist/FileSystem.d.ts +15 -0
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +8 -0
- package/dist/FileSystem.js.map +1 -1
- package/dist/Filter.d.ts +55 -0
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +28 -0
- package/dist/Filter.js.map +1 -1
- package/dist/Formatter.d.ts +3 -0
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +39 -1
- package/dist/Formatter.js.map +1 -1
- package/dist/Function.d.ts +30 -0
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +20 -0
- package/dist/Function.js.map +1 -1
- package/dist/Graph.d.ts +247 -12
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +149 -28
- package/dist/Graph.js.map +1 -1
- package/dist/HKT.d.ts +5 -0
- package/dist/HKT.d.ts.map +1 -1
- package/dist/Hash.d.ts +14 -0
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +12 -0
- package/dist/Hash.js.map +1 -1
- package/dist/HashMap.d.ts +91 -0
- package/dist/HashMap.d.ts.map +1 -1
- package/dist/HashMap.js +39 -0
- package/dist/HashMap.js.map +1 -1
- package/dist/HashRing.d.ts +17 -0
- package/dist/HashRing.d.ts.map +1 -1
- package/dist/HashRing.js +22 -5
- package/dist/HashRing.js.map +1 -1
- package/dist/HashSet.d.ts +49 -0
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js +19 -0
- package/dist/HashSet.js.map +1 -1
- package/dist/Inspectable.d.ts +7 -0
- package/dist/Inspectable.d.ts.map +1 -1
- package/dist/Inspectable.js +6 -0
- package/dist/Inspectable.js.map +1 -1
- package/dist/Iterable.d.ts +127 -0
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +51 -0
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonPatch.d.ts +4 -0
- package/dist/JsonPatch.d.ts.map +1 -1
- package/dist/JsonPatch.js +3 -0
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonPointer.d.ts +5 -0
- package/dist/JsonPointer.d.ts.map +1 -1
- package/dist/JsonPointer.js +5 -0
- package/dist/JsonPointer.js.map +1 -1
- package/dist/JsonSchema.d.ts +16 -0
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +11 -0
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Latch.d.ts +14 -0
- package/dist/Latch.d.ts.map +1 -1
- package/dist/Latch.js +10 -0
- package/dist/Latch.js.map +1 -1
- package/dist/Layer.d.ts +100 -0
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +45 -1
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMap.d.ts +7 -0
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LayerMap.js +4 -0
- package/dist/LayerMap.js.map +1 -1
- package/dist/LayerRef.d.ts +5 -0
- package/dist/LayerRef.d.ts.map +1 -1
- package/dist/LayerRef.js +3 -0
- package/dist/LayerRef.js.map +1 -1
- package/dist/LogLevel.d.ts +20 -0
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +9 -0
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +25 -0
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +30 -4
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +5 -0
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +9 -1
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Match.d.ts +51 -0
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +39 -0
- package/dist/Match.js.map +1 -1
- package/dist/Metric.d.ts +59 -0
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +31 -0
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts +32 -0
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js +16 -0
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/MutableHashSet.d.ts +16 -0
- package/dist/MutableHashSet.d.ts.map +1 -1
- package/dist/MutableHashSet.js +10 -0
- package/dist/MutableHashSet.js.map +1 -1
- package/dist/MutableList.d.ts +20 -0
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +18 -0
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts +31 -0
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +17 -0
- package/dist/MutableRef.js.map +1 -1
- package/dist/Newtype.d.ts +9 -0
- package/dist/Newtype.d.ts.map +1 -1
- package/dist/Newtype.js +6 -0
- package/dist/Newtype.js.map +1 -1
- package/dist/NonEmptyIterable.d.ts +4 -0
- package/dist/NonEmptyIterable.d.ts.map +1 -1
- package/dist/NonEmptyIterable.js +2 -0
- package/dist/NonEmptyIterable.js.map +1 -1
- package/dist/Number.d.ts +61 -0
- package/dist/Number.d.ts.map +1 -1
- package/dist/Number.js +31 -0
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts +41 -0
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +20 -0
- package/dist/Optic.js.map +1 -1
- package/dist/Option.d.ts +134 -0
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +61 -0
- package/dist/Option.js.map +1 -1
- package/dist/Order.d.ts +29 -0
- package/dist/Order.d.ts.map +1 -1
- package/dist/Order.js +24 -0
- package/dist/Order.js.map +1 -1
- package/dist/Ordering.d.ts +7 -0
- package/dist/Ordering.d.ts.map +1 -1
- package/dist/Ordering.js +3 -0
- package/dist/Ordering.js.map +1 -1
- package/dist/PartitionedSemaphore.d.ts +24 -0
- package/dist/PartitionedSemaphore.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +47 -21
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Path.d.ts +6 -0
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +4 -0
- package/dist/Path.js.map +1 -1
- package/dist/Pipeable.d.ts +7 -0
- package/dist/Pipeable.d.ts.map +1 -1
- package/dist/Pipeable.js +5 -0
- package/dist/Pipeable.js.map +1 -1
- package/dist/PlatformError.d.ts +8 -0
- package/dist/PlatformError.d.ts.map +1 -1
- package/dist/PlatformError.js +7 -0
- package/dist/PlatformError.js.map +1 -1
- package/dist/Pool.d.ts +28 -5
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +42 -42
- package/dist/Pool.js.map +1 -1
- package/dist/Predicate.d.ts +84 -0
- package/dist/Predicate.d.ts.map +1 -1
- package/dist/Predicate.js +48 -0
- package/dist/Predicate.js.map +1 -1
- package/dist/PrimaryKey.d.ts +5 -0
- package/dist/PrimaryKey.d.ts.map +1 -1
- package/dist/PrimaryKey.js +4 -0
- package/dist/PrimaryKey.js.map +1 -1
- package/dist/PubSub.d.ts +67 -5
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +60 -8
- package/dist/PubSub.js.map +1 -1
- package/dist/Pull.d.ts +20 -0
- package/dist/Pull.d.ts.map +1 -1
- package/dist/Pull.js +10 -0
- package/dist/Pull.js.map +1 -1
- package/dist/Queue.d.ts +60 -0
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +58 -8
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts +13 -0
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +9 -0
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +23 -0
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +24 -1
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +6 -0
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/RcRef.js +3 -0
- package/dist/RcRef.js.map +1 -1
- package/dist/Record.d.ts +100 -0
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +43 -0
- package/dist/Record.js.map +1 -1
- package/dist/Redactable.d.ts +6 -0
- package/dist/Redactable.d.ts.map +1 -1
- package/dist/Redactable.js +4 -0
- package/dist/Redactable.js.map +1 -1
- package/dist/Redacted.d.ts +8 -0
- package/dist/Redacted.d.ts.map +1 -1
- package/dist/Redacted.js +6 -0
- package/dist/Redacted.js.map +1 -1
- package/dist/Reducer.d.ts +4 -0
- package/dist/Reducer.d.ts.map +1 -1
- package/dist/Reducer.js +3 -0
- package/dist/Reducer.js.map +1 -1
- package/dist/Ref.d.ts +20 -0
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +16 -0
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +21 -0
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +19 -0
- package/dist/References.js.map +1 -1
- package/dist/RegExp.d.ts +3 -0
- package/dist/RegExp.d.ts.map +1 -1
- package/dist/RegExp.js +4 -0
- package/dist/RegExp.js.map +1 -1
- package/dist/Request.d.ts +32 -0
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js +12 -0
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts +42 -0
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +27 -6
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.d.ts +6 -0
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +6 -0
- package/dist/Resource.js.map +1 -1
- package/dist/Result.d.ts +91 -0
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +41 -0
- package/dist/Result.js.map +1 -1
- package/dist/Runtime.d.ts +9 -0
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +7 -0
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts +57 -0
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +32 -0
- package/dist/Schedule.js.map +1 -1
- package/dist/Scheduler.d.ts +7 -0
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +5 -0
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +496 -1
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +280 -1
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +107 -0
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +81 -1
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +69 -2
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +63 -4
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +33 -0
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +18 -0
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaParser.d.ts +25 -0
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +26 -0
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +147 -0
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +99 -0
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +53 -0
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +46 -0
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Scope.d.ts +19 -0
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +12 -0
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.d.ts +34 -0
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +50 -19
- package/dist/ScopedCache.js.map +1 -1
- package/dist/ScopedRef.d.ts +9 -0
- package/dist/ScopedRef.d.ts.map +1 -1
- package/dist/ScopedRef.js +6 -0
- package/dist/ScopedRef.js.map +1 -1
- package/dist/Semaphore.d.ts +26 -0
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +10 -0
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts +125 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +75 -1
- package/dist/Sink.js.map +1 -1
- package/dist/StandardSchema.d.ts +1 -0
- package/dist/StandardSchema.d.ts.map +1 -1
- package/dist/StandardSchema.js +1 -0
- package/dist/Stdio.d.ts +7 -0
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +5 -0
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +603 -6
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +316 -57
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +87 -0
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +61 -0
- package/dist/String.js.map +1 -1
- package/dist/Struct.d.ts +46 -0
- package/dist/Struct.d.ts.map +1 -1
- package/dist/Struct.js +19 -0
- package/dist/Struct.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +65 -0
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +25 -0
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/Symbol.d.ts +2 -0
- package/dist/Symbol.d.ts.map +1 -1
- package/dist/Symbol.js +2 -0
- package/dist/Symbol.js.map +1 -1
- package/dist/SynchronizedRef.d.ts +63 -0
- package/dist/SynchronizedRef.d.ts.map +1 -1
- package/dist/SynchronizedRef.js +24 -0
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Take.d.ts +3 -0
- package/dist/Take.d.ts.map +1 -1
- package/dist/Take.js +1 -0
- package/dist/Take.js.map +1 -1
- package/dist/Terminal.d.ts +8 -0
- package/dist/Terminal.d.ts.map +1 -1
- package/dist/Terminal.js +4 -0
- package/dist/Terminal.js.map +1 -1
- package/dist/Tracer.d.ts +23 -0
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +12 -0
- package/dist/Tracer.js.map +1 -1
- package/dist/Trie.d.ts +68 -0
- package/dist/Trie.d.ts.map +1 -1
- package/dist/Trie.js +28 -0
- package/dist/Trie.js.map +1 -1
- package/dist/Tuple.d.ts +38 -0
- package/dist/Tuple.d.ts.map +1 -1
- package/dist/Tuple.js +18 -0
- package/dist/Tuple.js.map +1 -1
- package/dist/TxChunk.d.ts +52 -0
- package/dist/TxChunk.d.ts.map +1 -1
- package/dist/TxChunk.js +23 -0
- package/dist/TxChunk.js.map +1 -1
- package/dist/TxDeferred.d.ts +15 -0
- package/dist/TxDeferred.d.ts.map +1 -1
- package/dist/TxDeferred.js +8 -0
- package/dist/TxDeferred.js.map +1 -1
- package/dist/TxHashMap.d.ts +83 -0
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +52 -7
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +51 -0
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +29 -4
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +30 -0
- package/dist/TxPriorityQueue.d.ts.map +1 -1
- package/dist/TxPriorityQueue.js +22 -1
- package/dist/TxPriorityQueue.js.map +1 -1
- package/dist/TxPubSub.d.ts +25 -0
- package/dist/TxPubSub.d.ts.map +1 -1
- package/dist/TxPubSub.js +19 -0
- package/dist/TxPubSub.js.map +1 -1
- package/dist/TxQueue.d.ts +51 -0
- package/dist/TxQueue.d.ts.map +1 -1
- package/dist/TxQueue.js +30 -0
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +24 -0
- package/dist/TxReentrantLock.d.ts.map +1 -1
- package/dist/TxReentrantLock.js +32 -18
- package/dist/TxReentrantLock.js.map +1 -1
- package/dist/TxRef.d.ts +14 -0
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +7 -0
- package/dist/TxRef.js.map +1 -1
- package/dist/TxSemaphore.d.ts +25 -0
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +29 -13
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/TxSubscriptionRef.d.ts +25 -0
- package/dist/TxSubscriptionRef.d.ts.map +1 -1
- package/dist/TxSubscriptionRef.js +12 -0
- package/dist/TxSubscriptionRef.js.map +1 -1
- package/dist/Types.d.ts +36 -0
- package/dist/Types.d.ts.map +1 -1
- package/dist/Types.js +1 -0
- package/dist/UndefinedOr.d.ts +15 -0
- package/dist/UndefinedOr.d.ts.map +1 -1
- package/dist/UndefinedOr.js +9 -0
- package/dist/UndefinedOr.js.map +1 -1
- package/dist/Unify.d.ts +15 -0
- package/dist/Unify.d.ts.map +1 -1
- package/dist/Unify.js +2 -0
- package/dist/Unify.js.map +1 -1
- package/dist/Utils.d.ts +4 -0
- package/dist/Utils.d.ts.map +1 -1
- package/dist/Utils.js +1 -0
- package/dist/Utils.js.map +1 -1
- package/dist/Version.d.ts +26 -0
- package/dist/Version.d.ts.map +1 -0
- package/dist/Version.js +36 -0
- package/dist/Version.js.map +1 -0
- package/dist/ai/Chat.js +1 -1
- package/dist/ai/Chat.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +22 -0
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +22 -4
- package/dist/ai/DecisionModel.js.map +1 -1
- package/dist/ai/LanguageModel.d.ts +8 -0
- package/dist/ai/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +27 -15
- package/dist/ai/LanguageModel.js.map +1 -1
- package/dist/ai/McpSchema.d.ts +508 -508
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +1 -1
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts +32 -11
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +224 -172
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +22 -12
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Telemetry.d.ts +49 -41
- package/dist/ai/Telemetry.d.ts.map +1 -1
- package/dist/ai/Telemetry.js +6 -8
- package/dist/ai/Telemetry.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -0
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -0
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +1 -0
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +1 -0
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +79 -46
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2024_11_05.js +3 -1
- package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpStatefulRuntime.js +1 -0
- package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +11 -2
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/K8sHttpClient.d.ts.map +1 -1
- package/dist/cluster/K8sHttpClient.js +5 -2
- package/dist/cluster/K8sHttpClient.js.map +1 -1
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +14 -7
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +21 -12
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +30 -44
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +63 -62
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/cluster/internal/interruptors.js +8 -0
- package/dist/cluster/internal/interruptors.js.map +1 -1
- package/dist/cluster/internal/resourceMap.js +39 -14
- package/dist/cluster/internal/resourceMap.js.map +1 -1
- package/dist/cluster/internal/resourceRef.js +168 -87
- package/dist/cluster/internal/resourceRef.js.map +1 -1
- package/dist/encoding/Base64.d.ts +4 -0
- package/dist/encoding/Base64.d.ts.map +1 -1
- package/dist/encoding/Base64.js +4 -0
- package/dist/encoding/Base64.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts +4 -0
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +4 -0
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/EncodingError.d.ts +4 -0
- package/dist/encoding/EncodingError.d.ts.map +1 -1
- package/dist/encoding/EncodingError.js +4 -0
- package/dist/encoding/EncodingError.js.map +1 -1
- package/dist/encoding/Hex.d.ts +5 -0
- package/dist/encoding/Hex.d.ts.map +1 -1
- package/dist/encoding/Hex.js +5 -0
- package/dist/encoding/Hex.js.map +1 -1
- package/dist/encoding/Toml.js +2 -2
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +6 -4
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/index.d.ts +4 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +4 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +8 -4
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +27 -10
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +49 -7
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/http/Headers.d.ts +3 -1
- package/dist/http/Headers.d.ts.map +1 -1
- package/dist/http/Headers.js +4 -2
- package/dist/http/Headers.js.map +1 -1
- package/dist/http/HttpClient.d.ts +9 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +40 -21
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientResponse.js +3 -1
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpEffect.d.ts +3 -0
- package/dist/http/HttpEffect.d.ts.map +1 -1
- package/dist/http/HttpEffect.js +5 -2
- package/dist/http/HttpEffect.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +17 -0
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +58 -40
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpServer.d.ts +1 -1
- package/dist/http/HttpServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +14 -0
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/HttpTraceContext.d.ts +1 -1
- package/dist/http/HttpTraceContext.d.ts.map +1 -1
- package/dist/http/HttpTraceContext.js +4 -4
- package/dist/http/HttpTraceContext.js.map +1 -1
- package/dist/http/internal/tracing.d.ts +2 -0
- package/dist/http/internal/tracing.d.ts.map +1 -0
- package/dist/http/internal/tracing.js +37 -0
- package/dist/http/internal/tracing.js.map +1 -0
- package/dist/http-api/HttpApiBuilder.js +2 -1
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +12 -3
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +4 -2
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +7 -3
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiSecurity.d.ts +8 -8
- package/dist/http-api/HttpApiSecurity.js +8 -8
- package/dist/index.d.ts +155 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +155 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/arbitrary/array.js +3 -3
- package/dist/internal/arbitrary/array.js.map +1 -1
- package/dist/internal/arbitrary/model.js +26 -11
- package/dist/internal/arbitrary/model.js.map +1 -1
- package/dist/internal/arbitrary/runner.js +8 -8
- package/dist/internal/arbitrary/runner.js.map +1 -1
- package/dist/internal/arbitrary/schema.js +4 -5
- package/dist/internal/arbitrary/schema.js.map +1 -1
- package/dist/internal/core.js +43 -2
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +1 -1
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +104 -120
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/rcRef.js +59 -23
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/schedule.js +7 -5
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +11 -8
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +2 -2
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/version.d.ts +2 -0
- package/dist/internal/version.d.ts.map +1 -0
- package/dist/internal/version.js +3 -0
- package/dist/internal/version.js.map +1 -0
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +5 -6
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/observability/OtlpLogger.js +23 -27
- package/dist/observability/OtlpLogger.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts +5 -3
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +21 -94
- package/dist/observability/OtlpMetrics.js.map +1 -1
- package/dist/observability/OtlpResource.d.ts +4 -3
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +20 -23
- package/dist/observability/OtlpResource.js.map +1 -1
- package/dist/observability/OtlpTracer.d.ts +1 -0
- package/dist/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/observability/OtlpTracer.js +32 -36
- package/dist/observability/OtlpTracer.js.map +1 -1
- package/dist/observability/internal/otlpProtobuf.js +32 -1
- package/dist/observability/internal/otlpProtobuf.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts +1 -1
- package/dist/reactivity/Atom.d.ts +5 -5
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +9 -5
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomHttpApi.d.ts +2 -2
- package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/reactivity/AtomRegistry.d.ts +8 -0
- package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +21 -3
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +58 -34
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +20 -23
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/rpc/Utils.d.ts +2 -3
- package/dist/rpc/Utils.d.ts.map +1 -1
- package/dist/rpc/Utils.js +3 -4
- package/dist/rpc/Utils.js.map +1 -1
- package/dist/rpc/internal/tracing.d.ts +2 -0
- package/dist/rpc/internal/tracing.d.ts.map +1 -0
- package/dist/rpc/internal/tracing.js +18 -0
- package/dist/rpc/internal/tracing.js.map +1 -0
- package/dist/schema/SchemaCompiler/runtime.js +9 -1
- package/dist/schema/SchemaCompiler/runtime.js.map +1 -1
- package/dist/sql/SqlClient.js +4 -4
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/Statement.d.ts +21 -1
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +55 -7
- package/dist/sql/Statement.js.map +1 -1
- package/dist/testing/TestClock.d.ts +8 -0
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +7 -0
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestConsole.d.ts +7 -0
- package/dist/testing/TestConsole.d.ts.map +1 -1
- package/dist/testing/TestConsole.js +6 -0
- package/dist/testing/TestConsole.js.map +1 -1
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts +2 -0
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +1 -0
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +3 -3
- package/src/Array.ts +351 -3
- package/src/BigDecimal.ts +88 -0
- package/src/BigInt.ts +68 -0
- package/src/Boolean.ts +34 -0
- package/src/Brand.ts +10 -0
- package/src/ByteSize.ts +87 -0
- package/src/Cache.ts +72 -24
- package/src/Cause.ts +83 -1
- package/src/Channel.ts +368 -18
- package/src/ChannelSchema.ts +13 -0
- package/src/Chunk.ts +193 -0
- package/src/Clock.ts +7 -0
- package/src/Combiner.ts +10 -0
- package/src/Config.ts +82 -8
- package/src/ConfigProvider.ts +28 -0
- package/src/Console.ts +26 -0
- package/src/Context.ts +50 -0
- package/src/Cron.ts +32 -1
- package/src/Crypto.ts +5 -0
- package/src/Data.ts +13 -0
- package/src/DateTime.ts +171 -0
- package/src/Deferred.ts +51 -0
- package/src/Differ.ts +2 -0
- package/src/Duration.ts +90 -0
- package/src/Effect.ts +692 -27
- package/src/Effectable.ts +4 -0
- package/src/Equal.ts +12 -1
- package/src/Equivalence.ts +22 -0
- package/src/ErrorReporter.ts +36 -0
- package/src/ExecutionPlan.ts +58 -14
- package/src/Exit.ts +40 -0
- package/src/Fiber.ts +20 -0
- package/src/FiberHandle.ts +29 -4
- package/src/FiberMap.ts +38 -0
- package/src/FiberSet.ts +21 -0
- package/src/FileSystem.ts +16 -0
- package/src/Filter.ts +55 -0
- package/src/Formatter.ts +42 -1
- package/src/Function.ts +30 -0
- package/src/Graph.ts +317 -36
- package/src/HKT.ts +5 -0
- package/src/Hash.ts +15 -0
- package/src/HashMap.ts +91 -0
- package/src/HashRing.ts +32 -5
- package/src/HashSet.ts +53 -0
- package/src/Inspectable.ts +8 -0
- package/src/Iterable.ts +127 -0
- package/src/JsonPatch.ts +5 -0
- package/src/JsonPointer.ts +5 -0
- package/src/JsonSchema.ts +17 -0
- package/src/Latch.ts +14 -0
- package/src/Layer.ts +101 -1
- package/src/LayerMap.ts +7 -0
- package/src/LayerRef.ts +5 -0
- package/src/LogLevel.ts +20 -0
- package/src/Logger.ts +41 -5
- package/src/ManagedRuntime.ts +12 -1
- package/src/Match.ts +52 -0
- package/src/Metric.ts +69 -0
- package/src/MutableHashMap.ts +44 -0
- package/src/MutableHashSet.ts +17 -0
- package/src/MutableList.ts +21 -0
- package/src/MutableRef.ts +32 -0
- package/src/Newtype.ts +9 -0
- package/src/NonEmptyIterable.ts +4 -0
- package/src/Number.ts +61 -0
- package/src/Optic.ts +57 -0
- package/src/Option.ts +134 -0
- package/src/Order.ts +30 -0
- package/src/Ordering.ts +7 -0
- package/src/PartitionedSemaphore.ts +61 -22
- package/src/Path.ts +6 -0
- package/src/Pipeable.ts +7 -0
- package/src/PlatformError.ts +8 -0
- package/src/Pool.ts +48 -37
- package/src/Predicate.ts +85 -0
- package/src/PrimaryKey.ts +5 -0
- package/src/PubSub.ts +90 -9
- package/src/Pull.ts +20 -0
- package/src/Queue.ts +80 -10
- package/src/Random.ts +13 -0
- package/src/RcMap.ts +49 -2
- package/src/RcRef.ts +6 -0
- package/src/Record.ts +100 -0
- package/src/Redactable.ts +6 -0
- package/src/Redacted.ts +8 -0
- package/src/Reducer.ts +4 -0
- package/src/Ref.ts +42 -0
- package/src/References.ts +21 -0
- package/src/RegExp.ts +4 -0
- package/src/Request.ts +32 -0
- package/src/RequestResolver.ts +59 -10
- package/src/Resource.ts +7 -0
- package/src/Result.ts +93 -0
- package/src/Runtime.ts +10 -0
- package/src/Schedule.ts +61 -0
- package/src/Scheduler.ts +7 -0
- package/src/Schema.ts +499 -4
- package/src/SchemaAST.ts +115 -1
- package/src/SchemaGetter.ts +80 -4
- package/src/SchemaIssue.ts +34 -0
- package/src/SchemaParser.ts +26 -0
- package/src/SchemaRepresentation.ts +148 -0
- package/src/SchemaTransformation.ts +53 -0
- package/src/Scope.ts +19 -0
- package/src/ScopedCache.ts +82 -19
- package/src/ScopedRef.ts +9 -0
- package/src/Semaphore.ts +26 -0
- package/src/Sink.ts +126 -2
- package/src/StandardSchema.ts +1 -0
- package/src/Stdio.ts +7 -0
- package/src/Stream.ts +780 -103
- package/src/String.ts +87 -0
- package/src/Struct.ts +46 -0
- package/src/SubscriptionRef.ts +65 -0
- package/src/Symbol.ts +2 -0
- package/src/SynchronizedRef.ts +63 -0
- package/src/Take.ts +3 -0
- package/src/Terminal.ts +8 -0
- package/src/Tracer.ts +23 -0
- package/src/Trie.ts +68 -0
- package/src/Tuple.ts +38 -0
- package/src/TxChunk.ts +52 -0
- package/src/TxDeferred.ts +15 -0
- package/src/TxHashMap.ts +97 -6
- package/src/TxHashSet.ts +83 -3
- package/src/TxPriorityQueue.ts +34 -2
- package/src/TxPubSub.ts +26 -0
- package/src/TxQueue.ts +51 -0
- package/src/TxReentrantLock.ts +53 -36
- package/src/TxRef.ts +14 -0
- package/src/TxSemaphore.ts +47 -31
- package/src/TxSubscriptionRef.ts +25 -0
- package/src/Types.ts +36 -0
- package/src/UndefinedOr.ts +15 -0
- package/src/Unify.ts +15 -0
- package/src/Utils.ts +4 -0
- package/src/Version.ts +38 -0
- package/src/ai/Chat.ts +1 -1
- package/src/ai/DecisionModel.ts +42 -1
- package/src/ai/LanguageModel.ts +43 -21
- package/src/ai/McpSchema.ts +3 -3
- package/src/ai/McpServer.ts +119 -39
- package/src/ai/Response.ts +27 -12
- package/src/ai/Telemetry.ts +62 -58
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -0
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -0
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +1 -0
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +1 -0
- package/src/ai/internal/mcpRuntime.ts +84 -43
- package/src/ai/internal/mcpSchema/v2024_11_05.ts +4 -2
- package/src/ai/internal/mcpStatefulRuntime.ts +2 -0
- package/src/cluster/ClusterWorkflowEngine.ts +18 -4
- package/src/cluster/K8sHttpClient.ts +12 -2
- package/src/cluster/Sharding.ts +24 -24
- package/src/cluster/SqlMessageStorage.ts +26 -13
- package/src/cluster/SqlRunnerStorage.ts +85 -113
- package/src/cluster/internal/entityManager.ts +68 -80
- package/src/cluster/internal/interruptors.ts +13 -0
- package/src/cluster/internal/resourceMap.ts +55 -17
- package/src/cluster/internal/resourceRef.ts +189 -96
- package/src/encoding/Base64.ts +4 -0
- package/src/encoding/Base64Url.ts +4 -0
- package/src/encoding/EncodingError.ts +5 -0
- package/src/encoding/Hex.ts +5 -0
- package/src/encoding/Toml.ts +2 -2
- package/src/encoding/Yaml.ts +8 -4
- package/src/encoding/index.ts +4 -0
- package/src/eventlog/SqlEventJournal.ts +18 -4
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +282 -235
- package/src/http/Headers.ts +8 -2
- package/src/http/HttpClient.ts +44 -27
- package/src/http/HttpClientResponse.ts +3 -1
- package/src/http/HttpEffect.ts +11 -2
- package/src/http/HttpMiddleware.ts +67 -46
- package/src/http/HttpServer.ts +1 -1
- package/src/http/HttpStaticServer.ts +16 -0
- package/src/http/HttpTraceContext.ts +8 -4
- package/src/http/internal/tracing.ts +52 -0
- package/src/http-api/HttpApiBuilder.ts +5 -1
- package/src/http-api/HttpApiClient.ts +13 -4
- package/src/http-api/HttpApiError.ts +8 -3
- package/src/http-api/HttpApiSecurity.ts +8 -8
- package/src/index.ts +156 -0
- package/src/internal/arbitrary/array.ts +3 -3
- package/src/internal/arbitrary/model.ts +37 -14
- package/src/internal/arbitrary/runner.ts +7 -7
- package/src/internal/arbitrary/schema.ts +4 -3
- package/src/internal/core.ts +56 -2
- package/src/internal/dateTime.ts +3 -1
- package/src/internal/effect.ts +156 -156
- package/src/internal/rcRef.ts +83 -33
- package/src/internal/schedule.ts +23 -17
- package/src/internal/schema/fromJsonSchemaDocument.ts +5 -3
- package/src/internal/schema/standardSchema.ts +2 -2
- package/src/internal/version.ts +2 -0
- package/src/observability/OtlpExporter.ts +9 -6
- package/src/observability/OtlpLogger.ts +20 -21
- package/src/observability/OtlpMetrics.ts +34 -93
- package/src/observability/OtlpResource.ts +18 -27
- package/src/observability/OtlpTracer.ts +34 -40
- package/src/observability/internal/otlpProtobuf.ts +60 -0
- package/src/reactivity/AsyncResult.ts +1 -1
- package/src/reactivity/Atom.ts +10 -6
- package/src/reactivity/AtomHttpApi.ts +2 -4
- package/src/reactivity/AtomRegistry.ts +7 -0
- package/src/rpc/RpcClient.ts +74 -46
- package/src/rpc/RpcServer.ts +28 -25
- package/src/rpc/Utils.ts +4 -10
- package/src/rpc/internal/tracing.ts +22 -0
- package/src/schema/SchemaCompiler/runtime.ts +4 -1
- package/src/sql/SqlClient.ts +4 -4
- package/src/sql/Statement.ts +59 -7
- package/src/testing/TestClock.ts +9 -0
- package/src/testing/TestConsole.ts +8 -0
- package/src/testing/index.ts +3 -0
- package/src/workflow/WorkflowEngine.ts +4 -0
package/src/reactivity/Atom.ts
CHANGED
|
@@ -818,7 +818,7 @@ export interface AtomRuntime<R, ER = never> extends Atom<AsyncResult.AsyncResult
|
|
|
818
818
|
| ((
|
|
819
819
|
get: AtomContext
|
|
820
820
|
) => Effect.Effect<SubscriptionRef.SubscriptionRef<A>, E, Scope.Scope | R | AtomRegistry | Reactivity.Reactivity>)
|
|
821
|
-
) => Writable<AsyncResult.AsyncResult<A, E>, A>
|
|
821
|
+
) => Writable<AsyncResult.AsyncResult<A, E | ER>, A>
|
|
822
822
|
}
|
|
823
823
|
|
|
824
824
|
/**
|
|
@@ -2774,18 +2774,21 @@ export const batch: (f: () => void) => void = Registry.batch
|
|
|
2774
2774
|
// -----------------------------------------------------------------------------
|
|
2775
2775
|
|
|
2776
2776
|
/**
|
|
2777
|
-
* Creates a
|
|
2777
|
+
* Creates a signal atom that increments when the document becomes visible.
|
|
2778
2778
|
*
|
|
2779
2779
|
* **Details**
|
|
2780
2780
|
*
|
|
2781
2781
|
* It listens for `visibilitychange` events on `window` and removes the listener
|
|
2782
|
-
* when the atom is disposed.
|
|
2782
|
+
* when the atom is disposed. Without `window`, it stays at `0` and adds no listener.
|
|
2783
2783
|
*
|
|
2784
2784
|
* @stability unstable
|
|
2785
2785
|
* @category constants
|
|
2786
2786
|
* @since 4.0.0
|
|
2787
2787
|
*/
|
|
2788
2788
|
export const windowFocusSignal: Atom<number> = readable((get) => {
|
|
2789
|
+
if (typeof window === "undefined") {
|
|
2790
|
+
return 0
|
|
2791
|
+
}
|
|
2789
2792
|
let count = 0
|
|
2790
2793
|
function update() {
|
|
2791
2794
|
if (document.visibilityState === "visible") {
|
|
@@ -2825,8 +2828,8 @@ export const makeRefreshOnSignal = <_>(signal: Atom<_>) => <A extends Atom<any>>
|
|
|
2825
2828
|
*
|
|
2826
2829
|
* **Details**
|
|
2827
2830
|
*
|
|
2828
|
-
*
|
|
2829
|
-
*
|
|
2831
|
+
* Without `window`, this helper does not trigger refreshes. Source atom updates
|
|
2832
|
+
* are still forwarded.
|
|
2830
2833
|
*
|
|
2831
2834
|
* @stability unstable
|
|
2832
2835
|
* @category combinators
|
|
@@ -2991,7 +2994,8 @@ function updateSearchParams() {
|
|
|
2991
2994
|
}
|
|
2992
2995
|
}
|
|
2993
2996
|
searchParamState.updates.clear()
|
|
2994
|
-
const
|
|
2997
|
+
const search = searchParams.toString()
|
|
2998
|
+
const newUrl = `${window.location.pathname}${search.length > 0 ? `?${search}` : ""}${window.location.hash}`
|
|
2995
2999
|
window.history.pushState({}, "", newUrl)
|
|
2996
3000
|
searchParamState.updating = false
|
|
2997
3001
|
}
|
|
@@ -57,7 +57,7 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
|
|
|
57
57
|
HttpApiGroup.Endpoints<Group>,
|
|
58
58
|
EndpointIdentifier
|
|
59
59
|
>,
|
|
60
|
-
const ResponseMode extends HttpApiEndpoint.ClientResponseMode =
|
|
60
|
+
const ResponseMode extends HttpApiEndpoint.ClientResponseMode = "decoded-only"
|
|
61
61
|
>(
|
|
62
62
|
group: GroupIdentifier,
|
|
63
63
|
endpoint: EndpointIdentifier,
|
|
@@ -353,9 +353,7 @@ type ResponseByMode<
|
|
|
353
353
|
Endpoint extends HttpApiEndpoint.Constraint,
|
|
354
354
|
ResponseMode extends HttpApiEndpoint.ClientResponseMode
|
|
355
355
|
> = HttpApiClient.Client.Response<
|
|
356
|
-
|
|
357
|
-
ReturnType<HttpApiClient.Client.Method<Extract<Endpoint, HttpApiEndpoint.ConstraintRequest>, never, never>>
|
|
358
|
-
>,
|
|
356
|
+
HttpApiClient.SuccessType<Extract<Endpoint, HttpApiEndpoint.ConstraintRequest>["~Success"]>,
|
|
359
357
|
ResponseMode
|
|
360
358
|
>
|
|
361
359
|
|
|
@@ -71,11 +71,13 @@ export interface AtomRegistry {
|
|
|
71
71
|
readonly scheduler: Scheduler
|
|
72
72
|
readonly schedulerAsync: Scheduler
|
|
73
73
|
readonly getNodes: () => ReadonlyMap<Atom.Atom<any> | string, Node<any>>
|
|
74
|
+
readonly ensureNode: <A>(atom: Atom.Atom<A>) => Node<A>
|
|
74
75
|
readonly get: <A>(atom: Atom.Atom<A>) => A
|
|
75
76
|
readonly mount: <A>(atom: Atom.Atom<A>) => () => void
|
|
76
77
|
readonly refresh: <A>(atom: Atom.Atom<A>) => void
|
|
77
78
|
readonly set: <R, W>(atom: Atom.Writable<R, W>, value: W) => void
|
|
78
79
|
readonly setSerializable: (key: string, encoded: unknown) => void
|
|
80
|
+
readonly preloadedSerializable: Map<string, unknown>
|
|
79
81
|
readonly modify: <R, W, A>(atom: Atom.Writable<R, W>, f: (_: R) => [returnValue: A, nextValue: W]) => A
|
|
80
82
|
readonly update: <R, W>(atom: Atom.Writable<R, W>, f: (_: R) => W) => void
|
|
81
83
|
readonly subscribe: <A>(atom: Atom.Atom<A>, f: (_: A) => void, options?: {
|
|
@@ -83,6 +85,7 @@ export interface AtomRegistry {
|
|
|
83
85
|
}) => () => void
|
|
84
86
|
readonly reset: () => void
|
|
85
87
|
readonly dispose: () => void
|
|
88
|
+
scheduleNodeRemoval(node: Node<any>): void
|
|
86
89
|
onNodeAdded?: ((node: Node<any>) => void) | undefined
|
|
87
90
|
onNodeRemoved?: ((node: Node<any>) => void) | undefined
|
|
88
91
|
}
|
|
@@ -102,10 +105,14 @@ export interface AtomRegistry {
|
|
|
102
105
|
export interface Node<A> {
|
|
103
106
|
readonly atom: Atom.Atom<A>
|
|
104
107
|
readonly value: () => A
|
|
108
|
+
readonly valueOption: () => Option.Option<A>
|
|
109
|
+
readonly canBeRemoved: boolean
|
|
105
110
|
parents: Set<Node<any>>
|
|
106
111
|
children: Set<Node<any>>
|
|
107
112
|
listeners: Set<() => void>
|
|
108
113
|
currentState(): "uninitialized" | "stale" | "valid" | "removed"
|
|
114
|
+
setInitialValue(value: A): void
|
|
115
|
+
subscribe(listener: () => void): () => void
|
|
109
116
|
}
|
|
110
117
|
|
|
111
118
|
/**
|
package/src/rpc/RpcClient.ts
CHANGED
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import type { NonEmptyReadonlyArray } from "../Array.ts"
|
|
15
15
|
import * as Cause from "../Cause.ts"
|
|
16
|
+
import * as Clock from "../Clock.ts"
|
|
16
17
|
import * as Context from "../Context.ts"
|
|
17
|
-
import
|
|
18
|
+
import * as Duration from "../Duration.ts"
|
|
18
19
|
import * as Effect from "../Effect.ts"
|
|
19
20
|
import * as Exit from "../Exit.ts"
|
|
20
21
|
import * as Fiber from "../Fiber.ts"
|
|
@@ -42,6 +43,7 @@ import type { Span } from "../Tracer.ts"
|
|
|
42
43
|
import * as Transferable from "../workers/Transferable.ts"
|
|
43
44
|
import * as Worker from "../workers/Worker.ts"
|
|
44
45
|
import type { WorkerError } from "../workers/WorkerError.ts"
|
|
46
|
+
import * as RpcTracing from "./internal/tracing.ts"
|
|
45
47
|
import * as Rpc from "./Rpc.ts"
|
|
46
48
|
import { RpcClientDefect, RpcClientError } from "./RpcClientError.ts"
|
|
47
49
|
import type * as RpcGroup from "./RpcGroup.ts"
|
|
@@ -267,7 +269,7 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
|
|
|
267
269
|
readonly flatten?: Flatten | undefined
|
|
268
270
|
}
|
|
269
271
|
) {
|
|
270
|
-
const spanPrefix = options
|
|
272
|
+
const spanPrefix = options.spanPrefix
|
|
271
273
|
const supportsAck = options?.supportsAck ?? true
|
|
272
274
|
const disableTracing = options?.disableTracing ?? false
|
|
273
275
|
const generateRequestId = options?.generateRequestId ?? (() => requestIdCounter++ as RequestId)
|
|
@@ -335,8 +337,8 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
|
|
|
335
337
|
opts?.discard ?? false
|
|
336
338
|
)
|
|
337
339
|
return disableTracing ? onRequest(undefined) : Effect.useSpan(
|
|
338
|
-
|
|
339
|
-
{ attributes: options.spanAttributes },
|
|
340
|
+
RpcTracing.spanName(spanPrefix, rpc._tag),
|
|
341
|
+
{ kind: "client", attributes: RpcTracing.spanAttributes(rpc._tag, options.spanAttributes) },
|
|
340
342
|
onRequest
|
|
341
343
|
)
|
|
342
344
|
}
|
|
@@ -447,16 +449,19 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
|
|
|
447
449
|
return yield* Effect.interrupt
|
|
448
450
|
}
|
|
449
451
|
|
|
450
|
-
const span = disableTracing ? undefined : yield* Effect.makeSpanScoped(
|
|
451
|
-
|
|
452
|
-
|
|
452
|
+
const span = disableTracing ? undefined : yield* Effect.makeSpanScoped(
|
|
453
|
+
RpcTracing.spanName(spanPrefix, rpc._tag),
|
|
454
|
+
{ kind: "client", attributes: RpcTracing.spanAttributes(rpc._tag, options.spanAttributes) }
|
|
455
|
+
)
|
|
453
456
|
const fiber = Fiber.getCurrent()!
|
|
454
457
|
const id = generateRequestId()
|
|
455
458
|
|
|
456
459
|
const scope = Context.getUnsafe(fiber.context, Scope.Scope)
|
|
460
|
+
const queue = yield* Queue.bounded<any, any>(streamBufferSize)
|
|
457
461
|
yield* Scope.addFinalizerExit(
|
|
458
462
|
scope,
|
|
459
463
|
(exit) => {
|
|
464
|
+
Queue.shutdownUnsafe(queue)
|
|
460
465
|
if (!entries.has(id)) return Effect.void
|
|
461
466
|
entries.delete(id)
|
|
462
467
|
return sendInterrupt(
|
|
@@ -469,7 +474,6 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
|
|
|
469
474
|
}
|
|
470
475
|
)
|
|
471
476
|
|
|
472
|
-
const queue = yield* Queue.bounded<any, any>(streamBufferSize)
|
|
473
477
|
entries.set(id, {
|
|
474
478
|
_tag: "Queue",
|
|
475
479
|
rpc,
|
|
@@ -671,6 +675,12 @@ export const make: <Rpcs extends Rpc.Any, const Flatten extends boolean = false>
|
|
|
671
675
|
}
|
|
672
676
|
const entries = new Map<RequestId, ClientEntry>()
|
|
673
677
|
|
|
678
|
+
const interruptRequest = (requestId: RequestId): Effect.Effect<void, RpcClientError> => {
|
|
679
|
+
if (!entries.has(requestId)) return Effect.void
|
|
680
|
+
entries.delete(requestId)
|
|
681
|
+
return send(clientId, { _tag: "Interrupt", requestId }) as Effect.Effect<void, RpcClientError>
|
|
682
|
+
}
|
|
683
|
+
|
|
674
684
|
const { client, write } = yield* makeNoSerialization(group, {
|
|
675
685
|
...options,
|
|
676
686
|
supportsAck,
|
|
@@ -711,13 +721,7 @@ export const make: <Rpcs extends Rpc.Any, const Flatten extends boolean = false>
|
|
|
711
721
|
}) as Effect.Effect<void, RpcClientError>
|
|
712
722
|
}
|
|
713
723
|
case "Interrupt": {
|
|
714
|
-
|
|
715
|
-
if (!entry) return Effect.void
|
|
716
|
-
entries.delete(message.requestId)
|
|
717
|
-
return send(clientId, {
|
|
718
|
-
_tag: "Interrupt",
|
|
719
|
-
requestId: message.requestId
|
|
720
|
-
}) as Effect.Effect<void, RpcClientError>
|
|
724
|
+
return interruptRequest(message.requestId)
|
|
721
725
|
}
|
|
722
726
|
case "Eof": {
|
|
723
727
|
return Effect.void
|
|
@@ -732,19 +736,22 @@ export const make: <Rpcs extends Rpc.Any, const Flatten extends boolean = false>
|
|
|
732
736
|
const requestId = RequestId(message.requestId)
|
|
733
737
|
const entry = entries.get(requestId)
|
|
734
738
|
if (!entry || Option.isNone(entry.schemas.decodeChunk)) return Effect.void
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
requestId:
|
|
746
|
-
|
|
747
|
-
|
|
739
|
+
const decodeChunk = entry.schemas.decodeChunk.value
|
|
740
|
+
return Effect.uninterruptibleMask((restore) =>
|
|
741
|
+
restore(
|
|
742
|
+
decodeChunk(message.values).pipe(
|
|
743
|
+
Effect.provideContext(entry.context),
|
|
744
|
+
Effect.orDie,
|
|
745
|
+
Effect.flatMap((chunk) => write({ _tag: "Chunk", clientId: 0, requestId, values: chunk }))
|
|
746
|
+
)
|
|
747
|
+
).pipe(
|
|
748
|
+
Effect.onError((cause) =>
|
|
749
|
+
write({ _tag: "Exit", clientId: 0, requestId, exit: Exit.failCause(cause) }).pipe(
|
|
750
|
+
Effect.andThen(Cause.hasInterrupts(cause) ? Effect.void : Effect.ignore(interruptRequest(requestId)))
|
|
751
|
+
)
|
|
752
|
+
),
|
|
753
|
+
// a decode failure only ends its own request; interruption still propagates
|
|
754
|
+
Effect.catchCauseIf((cause) => !Cause.hasInterrupts(cause), () => Effect.void)
|
|
748
755
|
)
|
|
749
756
|
) as Effect.Effect<void>
|
|
750
757
|
}
|
|
@@ -768,7 +775,7 @@ export const make: <Rpcs extends Rpc.Any, const Flatten extends boolean = false>
|
|
|
768
775
|
case "ClientProtocolError": {
|
|
769
776
|
const exit = Exit.fail(message.error)
|
|
770
777
|
return Effect.forEach(
|
|
771
|
-
entries.keys(),
|
|
778
|
+
Array.from(entries.keys()),
|
|
772
779
|
(requestId) => write({ _tag: "Exit", clientId: 0, requestId, exit: exit as any })
|
|
773
780
|
)
|
|
774
781
|
}
|
|
@@ -1042,16 +1049,24 @@ export const layerProtocolHttp = (options: {
|
|
|
1042
1049
|
* `RpcSerialization`, connection hooks, ping timeouts, and the configured retry
|
|
1043
1050
|
* policy.
|
|
1044
1051
|
*
|
|
1052
|
+
* **Details**
|
|
1053
|
+
*
|
|
1054
|
+
* `pingInterval` defaults to 5 seconds. `pingTimeout` defaults to the interval
|
|
1055
|
+
* and measures time since the last decoded server frame, not the last pong.
|
|
1056
|
+
* The timeout is checked on each ping tick; any decoded frame counts as liveness.
|
|
1057
|
+
*
|
|
1045
1058
|
* @stability unstable
|
|
1046
1059
|
* @category protocols
|
|
1047
1060
|
* @since 4.0.0
|
|
1048
1061
|
*/
|
|
1049
1062
|
export const makeProtocolSocket = (options?: {
|
|
1063
|
+
readonly pingInterval?: Duration.Input | undefined
|
|
1064
|
+
readonly pingTimeout?: Duration.Input | undefined
|
|
1050
1065
|
readonly retryTransientErrors?: boolean | undefined
|
|
1051
1066
|
readonly retryPolicy?: Schedule.Schedule<any, Socket.SocketError> | undefined
|
|
1052
1067
|
/**
|
|
1053
1068
|
* Runs for each retried `SocketOpenError` when `retryTransientErrors` is enabled.
|
|
1054
|
-
* A
|
|
1069
|
+
* A ping timeout fails in-flight calls and is not reported through this hook.
|
|
1055
1070
|
* The returned `Effect<void>` cannot fail with a typed error or require
|
|
1056
1071
|
* services; defects are logged and ignored so retries can continue.
|
|
1057
1072
|
*/
|
|
@@ -1074,7 +1089,7 @@ export const makeProtocolSocket = (options?: {
|
|
|
1074
1089
|
// `parser` is replaced on every connect, and a stateful serialization
|
|
1075
1090
|
// encodes against the connection it is writing to, so the ping is encoded
|
|
1076
1091
|
// when it is sent rather than once up front.
|
|
1077
|
-
const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing)!)))
|
|
1092
|
+
const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing)!)), options)
|
|
1078
1093
|
let currentError: RpcClientError | undefined
|
|
1079
1094
|
|
|
1080
1095
|
const broadcast = (response: FromServerEncoded) =>
|
|
@@ -1091,15 +1106,13 @@ export const makeProtocolSocket = (options?: {
|
|
|
1091
1106
|
try {
|
|
1092
1107
|
const responses = parser.decode(data) as Array<FromServerEncoded>
|
|
1093
1108
|
if (responses.length === 0) return Effect.void
|
|
1109
|
+
pinger.onFrame()
|
|
1094
1110
|
let i = 0
|
|
1095
1111
|
return Effect.whileLoop({
|
|
1096
1112
|
while: () => i < responses.length,
|
|
1097
1113
|
body: () => {
|
|
1098
1114
|
const response = responses[i++]
|
|
1099
|
-
if (response._tag === "Pong")
|
|
1100
|
-
pinger.onPong()
|
|
1101
|
-
return Effect.void
|
|
1102
|
-
}
|
|
1115
|
+
if (response._tag === "Pong") return Effect.void
|
|
1103
1116
|
if (Object.hasOwn(response, "requestId")) {
|
|
1104
1117
|
const requestId = (response as FromServerEncoded & { readonly requestId: string | number }).requestId
|
|
1105
1118
|
const clientId = requestClientMap.get(requestId)
|
|
@@ -1214,43 +1227,58 @@ const defaultRetryPolicy = Schedule.min([
|
|
|
1214
1227
|
Schedule.spaced(5000)
|
|
1215
1228
|
])
|
|
1216
1229
|
|
|
1217
|
-
const makePinger = Effect.fnUntraced(function*<A, E, R>(writePing: Effect.Effect<A, E, R
|
|
1218
|
-
|
|
1230
|
+
const makePinger = Effect.fnUntraced(function*<A, E, R>(writePing: Effect.Effect<A, E, R>, options?: {
|
|
1231
|
+
readonly pingInterval?: Duration.Input | undefined
|
|
1232
|
+
readonly pingTimeout?: Duration.Input | undefined
|
|
1233
|
+
}) {
|
|
1234
|
+
const clock = yield* Clock.Clock
|
|
1235
|
+
const interval = options?.pingInterval ?? "5 seconds"
|
|
1236
|
+
const timeoutMillis = Duration.toMillis(options?.pingTimeout ?? interval)
|
|
1237
|
+
let lastSeen = clock.currentTimeMillisUnsafe()
|
|
1219
1238
|
const latch = Latch.makeUnsafe()
|
|
1239
|
+
const onFrame = () => {
|
|
1240
|
+
lastSeen = clock.currentTimeMillisUnsafe()
|
|
1241
|
+
}
|
|
1220
1242
|
const reset = () => {
|
|
1221
|
-
|
|
1243
|
+
onFrame()
|
|
1222
1244
|
latch.closeUnsafe()
|
|
1223
1245
|
}
|
|
1224
|
-
const onPong = () => {
|
|
1225
|
-
recievedPong = true
|
|
1226
|
-
}
|
|
1227
1246
|
yield* Effect.suspend((): Effect.Effect<void, E, R> => {
|
|
1228
|
-
if (
|
|
1229
|
-
recievedPong = false
|
|
1247
|
+
if (clock.currentTimeMillisUnsafe() - lastSeen > timeoutMillis) return latch.open
|
|
1230
1248
|
return writePing
|
|
1231
1249
|
}).pipe(
|
|
1232
|
-
Effect.delay(
|
|
1250
|
+
Effect.delay(interval),
|
|
1233
1251
|
Effect.ignore,
|
|
1234
1252
|
Effect.forever,
|
|
1235
1253
|
Effect.interruptible,
|
|
1236
1254
|
Effect.forkScoped
|
|
1237
1255
|
)
|
|
1238
|
-
return { timeout: latch.await, reset,
|
|
1256
|
+
return { timeout: latch.await, reset, onFrame } as const
|
|
1239
1257
|
})
|
|
1240
1258
|
|
|
1241
1259
|
/**
|
|
1242
1260
|
* Provides a client `Protocol` backed by the current `Socket` and
|
|
1243
1261
|
* `RpcSerialization` services.
|
|
1244
1262
|
*
|
|
1263
|
+
* **Details**
|
|
1264
|
+
*
|
|
1265
|
+
* `pingInterval` defaults to 5 seconds. `pingTimeout` defaults to the interval
|
|
1266
|
+
* and measures time since the last decoded server frame, not the last pong.
|
|
1267
|
+
* The timeout is checked on each ping tick; any decoded frame counts as liveness.
|
|
1268
|
+
* `retryPolicy` configures retries after socket errors.
|
|
1269
|
+
*
|
|
1245
1270
|
* @stability unstable
|
|
1246
1271
|
* @category layers
|
|
1247
1272
|
* @since 4.0.0
|
|
1248
1273
|
*/
|
|
1249
1274
|
export const layerProtocolSocket = (options?: {
|
|
1275
|
+
readonly pingInterval?: Duration.Input | undefined
|
|
1276
|
+
readonly pingTimeout?: Duration.Input | undefined
|
|
1250
1277
|
readonly retryTransientErrors?: boolean | undefined
|
|
1278
|
+
readonly retryPolicy?: Schedule.Schedule<any, Socket.SocketError> | undefined
|
|
1251
1279
|
/**
|
|
1252
1280
|
* Runs for each retried `SocketOpenError` when `retryTransientErrors` is enabled.
|
|
1253
|
-
* A
|
|
1281
|
+
* A ping timeout fails in-flight calls and is not reported through this hook.
|
|
1254
1282
|
* The returned `Effect<void>` cannot fail with a typed error or require
|
|
1255
1283
|
* services; defects are logged and ignored so retries can continue.
|
|
1256
1284
|
*/
|
package/src/rpc/RpcServer.ts
CHANGED
|
@@ -44,6 +44,7 @@ import type * as Types from "../Types.ts"
|
|
|
44
44
|
import * as Transferable from "../workers/Transferable.ts"
|
|
45
45
|
import type { WorkerError } from "../workers/WorkerError.ts"
|
|
46
46
|
import * as WorkerRunner from "../workers/WorkerRunner.ts"
|
|
47
|
+
import * as RpcTracing from "./internal/tracing.ts"
|
|
47
48
|
import * as Rpc from "./Rpc.ts"
|
|
48
49
|
import type * as RpcGroup from "./RpcGroup.ts"
|
|
49
50
|
import type {
|
|
@@ -117,7 +118,7 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
|
|
|
117
118
|
const enableTracing = options.disableTracing !== true
|
|
118
119
|
const enableSpanPropagation = options.disableSpanPropagation !== true
|
|
119
120
|
const supportsAck = options.disableClientAcks !== true
|
|
120
|
-
const spanPrefix = options.spanPrefix
|
|
121
|
+
const spanPrefix = options.spanPrefix
|
|
121
122
|
const concurrency = options.concurrency ?? "unbounded"
|
|
122
123
|
const disableFatalDefects = options.disableFatalDefects ?? false
|
|
123
124
|
const services = yield* Effect.context<Rpc.ToHandler<Rpcs> | Scope.Scope>()
|
|
@@ -331,9 +332,10 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
|
|
|
331
332
|
requestFiber.context,
|
|
332
333
|
Tracer.ParentSpan
|
|
333
334
|
)
|
|
334
|
-
effect = Effect.withSpan(effect,
|
|
335
|
+
effect = Effect.withSpan(effect, RpcTracing.spanName(spanPrefix, request.tag), {
|
|
335
336
|
captureStackTrace: false,
|
|
336
|
-
|
|
337
|
+
kind: "server",
|
|
338
|
+
attributes: RpcTracing.spanAttributes(request.tag, options.spanAttributes),
|
|
337
339
|
parent: enableSpanPropagation && request.spanId
|
|
338
340
|
? Tracer.externalSpan({
|
|
339
341
|
traceId: request.traceId!,
|
|
@@ -359,11 +361,14 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
|
|
|
359
361
|
)
|
|
360
362
|
const fiber = trackFiber(
|
|
361
363
|
runFork(
|
|
362
|
-
|
|
364
|
+
// Register before the handler runs to catch synchronous cancellation.
|
|
365
|
+
Effect.withFiber((fiber) => {
|
|
366
|
+
client.fibers.set(request.id, fiber)
|
|
367
|
+
return effect
|
|
368
|
+
}),
|
|
363
369
|
isUninterruptible ? { uninterruptible: true } : undefined
|
|
364
370
|
)
|
|
365
371
|
)
|
|
366
|
-
client.fibers.set(request.id, fiber)
|
|
367
372
|
fiber.addObserver(function onExit(exit: Exit.Exit<any, any>): void {
|
|
368
373
|
if (deferred) {
|
|
369
374
|
const fiber = trackFiber(runFork(Effect.onExit(Deferred.await(deferred), (exit) =>
|
|
@@ -564,6 +569,10 @@ export const make: <Rpcs extends Rpc.Any>(
|
|
|
564
569
|
supportsTransferables
|
|
565
570
|
} = yield* Protocol
|
|
566
571
|
const encodeDefectUnsafe = Schema.encodeSync(codecFor(Schema.Defect()))
|
|
572
|
+
// Unknown tags have no RPC schema, so use a defect-only exit schema.
|
|
573
|
+
const encodeUnknownRequestExit: Schemas["encodeExit"] = Schema.encodeUnknownEffect(
|
|
574
|
+
codecFor(Schema.Exit(Schema.Never, Schema.Never, Schema.Defect()))
|
|
575
|
+
) as any
|
|
567
576
|
const services = yield* Effect.context<Rpc.ToHandler<Rpcs> | Rpc.Middleware<Rpcs>>()
|
|
568
577
|
const scope = yield* Scope.make()
|
|
569
578
|
|
|
@@ -629,7 +638,6 @@ export const make: <Rpcs extends Rpc.Any>(
|
|
|
629
638
|
u: NonEmptyReadonlyArray<unknown>
|
|
630
639
|
) => Effect.Effect<NonEmptyReadonlyArray<unknown>, Schema.SchemaError>
|
|
631
640
|
readonly encodeExit: (u: unknown) => Effect.Effect<ResponseExitEncoded["exit"], Schema.SchemaError>
|
|
632
|
-
readonly encodeDefect: (u: unknown) => Effect.Effect<unknown, Schema.SchemaError>
|
|
633
641
|
readonly context: Context.Context<never>
|
|
634
642
|
readonly collector?: Transferable.Collector["Service"] | undefined
|
|
635
643
|
}
|
|
@@ -648,7 +656,6 @@ export const make: <Rpcs extends Rpc.Any>(
|
|
|
648
656
|
)
|
|
649
657
|
) as any,
|
|
650
658
|
encodeExit: Schema.encodeUnknownEffect(codecFor(Rpc.exitSchema(rpc as any))) as any,
|
|
651
|
-
encodeDefect: Schema.encodeUnknownEffect(codecFor(rpc.defectSchema)) as any,
|
|
652
659
|
context: entry.context
|
|
653
660
|
}
|
|
654
661
|
schemasCache.set(rpc, schemas)
|
|
@@ -694,7 +701,7 @@ export const make: <Rpcs extends Rpc.Any>(
|
|
|
694
701
|
client.schemas.delete(requestId)
|
|
695
702
|
const defect = Cause.squash(Cause.map(cause, (e) => SchemaIssue.defaultFormatter(e.issue)))
|
|
696
703
|
return Effect.andThen(
|
|
697
|
-
sendRequestDefect(client, requestId, schemas.
|
|
704
|
+
sendRequestDefect(client, requestId, schemas.encodeExit, defect),
|
|
698
705
|
server.write(client.id, { _tag: "Interrupt", requestId, interruptors: [] })
|
|
699
706
|
)
|
|
700
707
|
})
|
|
@@ -703,22 +710,14 @@ export const make: <Rpcs extends Rpc.Any>(
|
|
|
703
710
|
const sendRequestDefect = (
|
|
704
711
|
client: Client,
|
|
705
712
|
requestId: RequestId,
|
|
706
|
-
|
|
713
|
+
encodeExit: Schemas["encodeExit"],
|
|
707
714
|
defect: unknown
|
|
708
715
|
) =>
|
|
709
716
|
Effect.catchCause(
|
|
710
|
-
Effect.flatMap(
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
exit: {
|
|
715
|
-
_tag: "Failure",
|
|
716
|
-
cause: [{
|
|
717
|
-
_tag: "Die",
|
|
718
|
-
defect: encodedDefect
|
|
719
|
-
}]
|
|
720
|
-
}
|
|
721
|
-
})),
|
|
717
|
+
Effect.flatMap(
|
|
718
|
+
encodeExit(Exit.die(defect)),
|
|
719
|
+
(exit) => send(client.id, responseEnvelope(requestId, "Exit", exit))
|
|
720
|
+
),
|
|
722
721
|
(cause) => sendDefect(client, Cause.squash(cause))
|
|
723
722
|
)
|
|
724
723
|
|
|
@@ -784,7 +783,7 @@ export const make: <Rpcs extends Rpc.Any>(
|
|
|
784
783
|
}
|
|
785
784
|
const rpc = group.requests.get(tag)
|
|
786
785
|
if (!rpc) {
|
|
787
|
-
return sendRequestDefect(client, requestId,
|
|
786
|
+
return sendRequestDefect(client, requestId, encodeUnknownRequestExit, `Unknown request tag: ${tag}`)
|
|
788
787
|
}
|
|
789
788
|
const schemas = getSchemas(rpc as any)
|
|
790
789
|
const decoded = schemas.decode(request.payload)
|
|
@@ -798,7 +797,7 @@ export const make: <Rpcs extends Rpc.Any>(
|
|
|
798
797
|
Effect.provideContext(decoded, schemas.context),
|
|
799
798
|
{
|
|
800
799
|
onFailure: (error) =>
|
|
801
|
-
sendRequestDefect(client, requestId, schemas.
|
|
800
|
+
sendRequestDefect(client, requestId, schemas.encodeExit, SchemaIssue.defaultFormatter(error.issue)),
|
|
802
801
|
onSuccess: (payload) => writeDecodedRequest(client, requestId, schemas, request, payload)
|
|
803
802
|
}
|
|
804
803
|
)
|
|
@@ -1181,7 +1180,10 @@ export const makeProtocolWithHttpEffect: (
|
|
|
1181
1180
|
})
|
|
1182
1181
|
}
|
|
1183
1182
|
|
|
1184
|
-
const initialChunk = yield*
|
|
1183
|
+
const initialChunk = yield* Pull.catchDone(
|
|
1184
|
+
Queue.takeAll(queue as Queue.Dequeue<Uint8Array, Cause.Done>),
|
|
1185
|
+
() => Effect.succeed([])
|
|
1186
|
+
)
|
|
1185
1187
|
if (queue.state._tag === "Done") {
|
|
1186
1188
|
return HttpServerResponse.uint8Array(mergeUint8Arrays(initialChunk), {
|
|
1187
1189
|
contentType: serialization.contentType
|
|
@@ -1392,13 +1394,14 @@ export const makeProtocolStdio = Effect.gen(function*() {
|
|
|
1392
1394
|
Effect.sandbox,
|
|
1393
1395
|
Effect.tapError(Effect.logError),
|
|
1394
1396
|
Effect.retry(Schedule.spaced(500)),
|
|
1395
|
-
Effect.
|
|
1397
|
+
Effect.andThen(() => writeRequest(0, constEof)),
|
|
1396
1398
|
Effect.forkScoped
|
|
1397
1399
|
)
|
|
1398
1400
|
|
|
1399
1401
|
yield* Stream.fromQueue(queue).pipe(
|
|
1400
1402
|
Stream.run(stdio.stdout()),
|
|
1401
1403
|
Effect.retry(Schedule.spaced(500)),
|
|
1404
|
+
Effect.ensuring(Effect.forkDetach(Fiber.interrupt(fiber), { startImmediately: true })),
|
|
1402
1405
|
Effect.forkScoped
|
|
1403
1406
|
)
|
|
1404
1407
|
|
package/src/rpc/Utils.ts
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Client and server protocol constructors use these helpers to expose a stable
|
|
5
|
-
* service before the active receiver is installed. Writes made before `run`
|
|
6
|
-
* starts are buffered with their current `Context`, then replayed once the
|
|
7
|
-
* receiver is ready.
|
|
2
|
+
* Buffers RPC protocol messages until their receive loop starts.
|
|
8
3
|
*
|
|
9
4
|
* @stability unstable
|
|
10
5
|
* @since 4.0.0
|
|
@@ -16,9 +11,8 @@ import type { Protocol } from "./RpcClient.ts"
|
|
|
16
11
|
import type { FromServerEncoded } from "./RpcMessage.ts"
|
|
17
12
|
|
|
18
13
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* the previous writer when the run ends.
|
|
14
|
+
* Buffers writes until `run` replays them with their original contexts and
|
|
15
|
+
* installs the writer. Restores the previous writer when `run` ends.
|
|
22
16
|
*
|
|
23
17
|
* @stability unstable
|
|
24
18
|
* @category services
|
|
@@ -43,12 +37,12 @@ export const withRun = <
|
|
|
43
37
|
run(f) {
|
|
44
38
|
return semaphore.withPermits(1)(Effect.gen(function*() {
|
|
45
39
|
const prev = write
|
|
46
|
-
write = f
|
|
47
40
|
|
|
48
41
|
for (const [args, context] of buffer) {
|
|
49
42
|
yield* Effect.provideContext(Effect.suspend(() => f(...args)), context)
|
|
50
43
|
}
|
|
51
44
|
buffer = []
|
|
45
|
+
write = f
|
|
52
46
|
|
|
53
47
|
return yield* Effect.onExit(Effect.never, () => {
|
|
54
48
|
write = prev
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Names the span after the RPC method, or `${spanPrefix}.${tag}` when a prefix
|
|
3
|
+
* is configured.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export const spanName = (spanPrefix: string | undefined, tag: string): string =>
|
|
8
|
+
spanPrefix === undefined ? tag : `${spanPrefix}.${tag}`
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Default RPC span attributes, overridden by user `spanAttributes`.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export const spanAttributes = (
|
|
16
|
+
tag: string,
|
|
17
|
+
attributes: Record<string, unknown> | undefined
|
|
18
|
+
): Record<string, unknown> => ({
|
|
19
|
+
"rpc.system.name": "effect_rpc",
|
|
20
|
+
"rpc.method": tag,
|
|
21
|
+
...attributes
|
|
22
|
+
})
|
|
@@ -65,12 +65,15 @@ const makeObjectBase = (
|
|
|
65
65
|
const runFallback: SchemaIssueParser = (input, options) =>
|
|
66
66
|
(fallback ??= ast.getParser(compile, compileField))(input, options)
|
|
67
67
|
const resume = (
|
|
68
|
-
|
|
68
|
+
snapshot: ObjectParserState,
|
|
69
69
|
index: number,
|
|
70
70
|
pending: Effect.Effect<unknown, SchemaIssue.Issue, any>
|
|
71
71
|
): Effect.Effect<unknown, SchemaIssue.Issue, any> => {
|
|
72
72
|
const property = properties![index]
|
|
73
73
|
return Effect.flatMap(Effect.exit(pending), (exit) => {
|
|
74
|
+
// Each execution gets its own output; `issues` is still undefined here
|
|
75
|
+
// because `errors: "all"` is routed to the fallback before suspending.
|
|
76
|
+
const state: ObjectParserState = { ...snapshot, out: { ...snapshot.out } }
|
|
74
77
|
const terminal = SchemaAST.stepProperty(state, property, exit)
|
|
75
78
|
if (terminal) return terminal
|
|
76
79
|
const done = () => InternalParser.succeed(state.out)
|
package/src/sql/SqlClient.ts
CHANGED
|
@@ -394,7 +394,7 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
394
394
|
Effect.uninterruptibleMask((restore) =>
|
|
395
395
|
Effect.useSpan(
|
|
396
396
|
"sql.transaction",
|
|
397
|
-
{ kind: "
|
|
397
|
+
{ kind: "internal" },
|
|
398
398
|
(span) =>
|
|
399
399
|
Effect.withFiber<A, E | SqlError, R>((fiber) => {
|
|
400
400
|
for (const [key, value] of options.spanAttributes) {
|
|
@@ -427,18 +427,18 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
427
427
|
let effect: Effect.Effect<void>
|
|
428
428
|
if (Exit.isSuccess(exit)) {
|
|
429
429
|
if (id === 0) {
|
|
430
|
-
span.event("
|
|
430
|
+
span.event("effect.sql.transaction.commit", clock.currentTimeNanosUnsafe())
|
|
431
431
|
const onCommitFailure = options.onCommitFailure
|
|
432
432
|
effect = Effect.orDie(options.commit(conn))
|
|
433
433
|
if (onCommitFailure) {
|
|
434
434
|
effect = Effect.onError(effect, () => Effect.orDie(onCommitFailure(conn)))
|
|
435
435
|
}
|
|
436
436
|
} else {
|
|
437
|
-
span.event("
|
|
437
|
+
span.event("effect.sql.transaction.savepoint", clock.currentTimeNanosUnsafe())
|
|
438
438
|
effect = Effect.void
|
|
439
439
|
}
|
|
440
440
|
} else {
|
|
441
|
-
span.event("
|
|
441
|
+
span.event("effect.sql.transaction.rollback", clock.currentTimeNanosUnsafe())
|
|
442
442
|
effect = Effect.orDie(
|
|
443
443
|
id > 0
|
|
444
444
|
? options.rollbackSavepoint(conn, id)
|