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
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* @since 4.0.0
|
|
12
12
|
*/
|
|
13
13
|
import * as Arr from "../Array.ts"
|
|
14
|
+
import * as Context from "../Context.ts"
|
|
14
15
|
import * as Effect from "../Effect.ts"
|
|
15
16
|
import * as Layer from "../Layer.ts"
|
|
16
17
|
import * as PubSub from "../PubSub.ts"
|
|
@@ -18,12 +19,22 @@ import * as RcMap from "../RcMap.ts"
|
|
|
18
19
|
import * as Schema from "../Schema.ts"
|
|
19
20
|
import * as SchemaTransformation from "../SchemaTransformation.ts"
|
|
20
21
|
import type * as Scope from "../Scope.ts"
|
|
22
|
+
import * as Semaphore from "../Semaphore.ts"
|
|
21
23
|
import * as SqlClient from "../sql/SqlClient.ts"
|
|
22
24
|
import * as SqlError from "../sql/SqlError.ts"
|
|
23
25
|
import * as Stream from "../Stream.ts"
|
|
24
26
|
import { Entry, EntryId, makeRemoteIdUnsafe, RemoteEntry, type RemoteId } from "./EventJournal.ts"
|
|
25
27
|
import * as EventLogServerUnencrypted from "./EventLogServerUnencrypted.ts"
|
|
26
28
|
|
|
29
|
+
let storageIdCounter = 0
|
|
30
|
+
const withTracerDisabled = Effect.withTracerEnabled(false)
|
|
31
|
+
|
|
32
|
+
type StorageOptions = {
|
|
33
|
+
readonly entryTablePrefix?: string
|
|
34
|
+
readonly remoteIdTable?: string
|
|
35
|
+
readonly insertBatchSize?: number
|
|
36
|
+
}
|
|
37
|
+
|
|
27
38
|
/**
|
|
28
39
|
* Creates unencrypted event-log server `Storage` backed by SQL.
|
|
29
40
|
*
|
|
@@ -37,59 +48,54 @@ import * as EventLogServerUnencrypted from "./EventLogServerUnencrypted.ts"
|
|
|
37
48
|
* @category constructors
|
|
38
49
|
* @since 4.0.0
|
|
39
50
|
*/
|
|
40
|
-
export const makeStorage = (options?:
|
|
41
|
-
readonly entryTablePrefix?: string
|
|
42
|
-
readonly remoteIdTable?: string
|
|
43
|
-
readonly insertBatchSize?: number
|
|
44
|
-
}): Effect.Effect<
|
|
51
|
+
export const makeStorage = Effect.fnUntraced(function*(options?: StorageOptions): Effect.fn.Return<
|
|
45
52
|
EventLogServerUnencrypted.Storage["Service"],
|
|
46
53
|
SqlError.SqlError,
|
|
47
54
|
SqlClient.SqlClient | Scope.Scope
|
|
48
|
-
>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
sql`
|
|
55
|
+
> {
|
|
56
|
+
const sql = (yield* SqlClient.SqlClient).withoutTransforms()
|
|
57
|
+
|
|
58
|
+
const entriesTable = options?.entryTablePrefix ?? "effect_events"
|
|
59
|
+
const remoteIdTable = options?.remoteIdTable ?? "effect_remote_id"
|
|
60
|
+
const insertBatchSize = options?.insertBatchSize ?? 200
|
|
61
|
+
const storesTable = `${entriesTable}_stores`
|
|
62
|
+
const sessionAuthBindingsTable = `${entriesTable}_session_auth_bindings`
|
|
63
|
+
|
|
64
|
+
const remoteIdTableSql = sql(remoteIdTable)
|
|
65
|
+
const entriesTableSql = sql(entriesTable)
|
|
66
|
+
const storesTableSql = sql(storesTable)
|
|
67
|
+
const sessionAuthBindingsTableSql = sql(sessionAuthBindingsTable)
|
|
68
|
+
|
|
69
|
+
yield* sql.onDialectOrElse({
|
|
70
|
+
pg: () =>
|
|
71
|
+
sql`
|
|
66
72
|
CREATE TABLE IF NOT EXISTS ${remoteIdTableSql} (
|
|
67
73
|
singleton INT PRIMARY KEY,
|
|
68
74
|
remote_id BYTEA NOT NULL
|
|
69
75
|
)`,
|
|
70
|
-
|
|
71
|
-
|
|
76
|
+
mysql: () =>
|
|
77
|
+
sql`
|
|
72
78
|
CREATE TABLE IF NOT EXISTS ${remoteIdTableSql} (
|
|
73
79
|
singleton INT PRIMARY KEY,
|
|
74
80
|
remote_id BINARY(16) NOT NULL
|
|
75
81
|
)`,
|
|
76
|
-
|
|
77
|
-
|
|
82
|
+
mssql: () =>
|
|
83
|
+
sql`
|
|
78
84
|
CREATE TABLE IF NOT EXISTS ${remoteIdTableSql} (
|
|
79
85
|
singleton INT PRIMARY KEY,
|
|
80
86
|
remote_id VARBINARY(16) NOT NULL
|
|
81
87
|
)`,
|
|
82
|
-
|
|
83
|
-
|
|
88
|
+
orElse: () =>
|
|
89
|
+
sql`
|
|
84
90
|
CREATE TABLE IF NOT EXISTS ${remoteIdTableSql} (
|
|
85
91
|
singleton INTEGER PRIMARY KEY,
|
|
86
92
|
remote_id BLOB NOT NULL
|
|
87
93
|
)`
|
|
88
|
-
|
|
94
|
+
})
|
|
89
95
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
96
|
+
yield* sql.onDialectOrElse({
|
|
97
|
+
pg: () =>
|
|
98
|
+
sql`
|
|
93
99
|
CREATE TABLE IF NOT EXISTS ${entriesTableSql} (
|
|
94
100
|
store_id TEXT NOT NULL,
|
|
95
101
|
sequence BIGINT NOT NULL,
|
|
@@ -100,8 +106,8 @@ export const makeStorage = (options?: {
|
|
|
100
106
|
PRIMARY KEY (store_id, sequence),
|
|
101
107
|
UNIQUE (store_id, entry_id)
|
|
102
108
|
)`,
|
|
103
|
-
|
|
104
|
-
|
|
109
|
+
mysql: () =>
|
|
110
|
+
sql`
|
|
105
111
|
CREATE TABLE IF NOT EXISTS ${entriesTableSql} (
|
|
106
112
|
store_id VARCHAR(191) NOT NULL,
|
|
107
113
|
sequence BIGINT NOT NULL,
|
|
@@ -112,8 +118,8 @@ export const makeStorage = (options?: {
|
|
|
112
118
|
PRIMARY KEY (store_id, sequence),
|
|
113
119
|
UNIQUE (store_id, entry_id)
|
|
114
120
|
)`,
|
|
115
|
-
|
|
116
|
-
|
|
121
|
+
mssql: () =>
|
|
122
|
+
sql`
|
|
117
123
|
CREATE TABLE IF NOT EXISTS ${entriesTableSql} (
|
|
118
124
|
store_id NVARCHAR(191) NOT NULL,
|
|
119
125
|
sequence BIGINT NOT NULL,
|
|
@@ -124,8 +130,8 @@ export const makeStorage = (options?: {
|
|
|
124
130
|
PRIMARY KEY (store_id, sequence),
|
|
125
131
|
UNIQUE (store_id, entry_id)
|
|
126
132
|
)`,
|
|
127
|
-
|
|
128
|
-
|
|
133
|
+
orElse: () =>
|
|
134
|
+
sql`
|
|
129
135
|
CREATE TABLE IF NOT EXISTS ${entriesTableSql} (
|
|
130
136
|
store_id TEXT NOT NULL,
|
|
131
137
|
sequence INTEGER NOT NULL,
|
|
@@ -136,116 +142,161 @@ export const makeStorage = (options?: {
|
|
|
136
142
|
PRIMARY KEY (store_id, sequence),
|
|
137
143
|
UNIQUE (store_id, entry_id)
|
|
138
144
|
)`
|
|
139
|
-
|
|
145
|
+
})
|
|
140
146
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
147
|
+
yield* sql.onDialectOrElse({
|
|
148
|
+
pg: () =>
|
|
149
|
+
sql`
|
|
144
150
|
CREATE TABLE IF NOT EXISTS ${storesTableSql} (
|
|
145
151
|
store_id TEXT PRIMARY KEY,
|
|
146
152
|
next_sequence BIGINT NOT NULL
|
|
147
153
|
)`,
|
|
148
|
-
|
|
149
|
-
|
|
154
|
+
mysql: () =>
|
|
155
|
+
sql`
|
|
150
156
|
CREATE TABLE IF NOT EXISTS ${storesTableSql} (
|
|
151
157
|
store_id VARCHAR(191) PRIMARY KEY,
|
|
152
158
|
next_sequence BIGINT NOT NULL
|
|
153
159
|
)`,
|
|
154
|
-
|
|
155
|
-
|
|
160
|
+
mssql: () =>
|
|
161
|
+
sql`
|
|
156
162
|
CREATE TABLE IF NOT EXISTS ${storesTableSql} (
|
|
157
163
|
store_id NVARCHAR(191) PRIMARY KEY,
|
|
158
164
|
next_sequence BIGINT NOT NULL
|
|
159
165
|
)`,
|
|
160
|
-
|
|
161
|
-
|
|
166
|
+
orElse: () =>
|
|
167
|
+
sql`
|
|
162
168
|
CREATE TABLE IF NOT EXISTS ${storesTableSql} (
|
|
163
169
|
store_id TEXT PRIMARY KEY,
|
|
164
170
|
next_sequence INTEGER NOT NULL
|
|
165
171
|
)`
|
|
166
|
-
|
|
172
|
+
})
|
|
167
173
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
174
|
+
yield* sql.onDialectOrElse({
|
|
175
|
+
pg: () =>
|
|
176
|
+
sql`
|
|
171
177
|
CREATE TABLE IF NOT EXISTS ${sessionAuthBindingsTableSql} (
|
|
172
178
|
public_key TEXT PRIMARY KEY,
|
|
173
179
|
signing_public_key BYTEA NOT NULL
|
|
174
180
|
)`,
|
|
175
|
-
|
|
176
|
-
|
|
181
|
+
mysql: () =>
|
|
182
|
+
sql`
|
|
177
183
|
CREATE TABLE IF NOT EXISTS ${sessionAuthBindingsTableSql} (
|
|
178
184
|
public_key VARCHAR(191) PRIMARY KEY,
|
|
179
185
|
signing_public_key BINARY(32) NOT NULL
|
|
180
186
|
)`,
|
|
181
|
-
|
|
182
|
-
|
|
187
|
+
mssql: () =>
|
|
188
|
+
sql`
|
|
183
189
|
CREATE TABLE IF NOT EXISTS ${sessionAuthBindingsTableSql} (
|
|
184
190
|
public_key NVARCHAR(191) PRIMARY KEY,
|
|
185
191
|
signing_public_key VARBINARY(32) NOT NULL
|
|
186
192
|
)`,
|
|
187
|
-
|
|
188
|
-
|
|
193
|
+
orElse: () =>
|
|
194
|
+
sql`
|
|
189
195
|
CREATE TABLE IF NOT EXISTS ${sessionAuthBindingsTableSql} (
|
|
190
196
|
public_key TEXT PRIMARY KEY,
|
|
191
197
|
signing_public_key BLOB NOT NULL
|
|
192
198
|
)`
|
|
193
|
-
|
|
199
|
+
})
|
|
194
200
|
|
|
195
|
-
|
|
201
|
+
const selectRemoteId = sql<{ remote_id: Uint8Array }>`
|
|
196
202
|
SELECT remote_id
|
|
197
203
|
FROM ${remoteIdTableSql}
|
|
198
204
|
WHERE singleton = 1
|
|
199
205
|
`
|
|
200
206
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
+
const remoteId = yield* selectRemoteId.pipe(
|
|
208
|
+
Effect.flatMap((rows) => {
|
|
209
|
+
const existing = rows[0]
|
|
210
|
+
if (existing !== undefined) {
|
|
211
|
+
return Effect.succeed(existing.remote_id as RemoteId)
|
|
212
|
+
}
|
|
207
213
|
|
|
208
|
-
|
|
209
|
-
|
|
214
|
+
const created = makeRemoteIdUnsafe()
|
|
215
|
+
return sql`
|
|
210
216
|
INSERT INTO ${remoteIdTableSql} (singleton, remote_id)
|
|
211
217
|
VALUES (1, ${created})
|
|
212
218
|
`.pipe(
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
),
|
|
217
|
-
Effect.andThen(selectRemoteId),
|
|
218
|
-
Effect.map((rows) => rows[0]?.remote_id as RemoteId | undefined),
|
|
219
|
-
Effect.map((persisted) => persisted ?? created)
|
|
220
|
-
)
|
|
221
|
-
})
|
|
222
|
-
)
|
|
223
|
-
|
|
224
|
-
const pubsubs = yield* RcMap.make({
|
|
225
|
-
lookup: (_storeId: string) =>
|
|
226
|
-
Effect.acquireRelease(
|
|
227
|
-
PubSub.unbounded<RemoteEntry>(),
|
|
228
|
-
PubSub.shutdown
|
|
219
|
+
Effect.catchIf(
|
|
220
|
+
isConstraintConflict,
|
|
221
|
+
() => Effect.void
|
|
229
222
|
),
|
|
230
|
-
|
|
223
|
+
Effect.andThen(selectRemoteId),
|
|
224
|
+
Effect.map((rows) => rows[0]?.remote_id as RemoteId | undefined),
|
|
225
|
+
Effect.map((persisted) => persisted ?? created)
|
|
226
|
+
)
|
|
231
227
|
})
|
|
228
|
+
)
|
|
232
229
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
230
|
+
const pubsubs = yield* RcMap.make({
|
|
231
|
+
lookup: (_storeId: string) =>
|
|
232
|
+
Effect.acquireRelease(
|
|
233
|
+
PubSub.unbounded<RemoteEntry>(),
|
|
234
|
+
PubSub.shutdown
|
|
235
|
+
),
|
|
236
|
+
idleTimeToLive: "5 minutes"
|
|
237
|
+
})
|
|
238
|
+
|
|
239
|
+
const transactionSemaphore = yield* Semaphore.make(1)
|
|
240
|
+
type PendingWrites = Array<readonly [storeId: string, entries: Array<RemoteEntry>]>
|
|
241
|
+
const pendingWrites = Context.Service<PendingWrites>(
|
|
242
|
+
`effect/eventlog/SqlEventLogServerUnencrypted/PendingWrites/${storageIdCounter++}`
|
|
243
|
+
)
|
|
244
|
+
const publish = Effect.fnUntraced(function*([storeId, entries]: PendingWrites[number]) {
|
|
245
|
+
const pubsub = yield* RcMap.get(pubsubs, storeId)
|
|
246
|
+
return yield* PubSub.publishAll(pubsub, entries)
|
|
247
|
+
}, Effect.scoped)
|
|
248
|
+
// Merge nested buffers on success; publish only after the outer commit.
|
|
249
|
+
// Hold the outer permit through publication to prevent later commits from overtaking it.
|
|
250
|
+
const withTransaction = Effect.fnUntraced(function*<A, E, R>(
|
|
251
|
+
effect: Effect.Effect<A, E, R>
|
|
252
|
+
): Effect.fn.Return<A, E | SqlError.SqlError, Exclude<R, PendingWrites>> {
|
|
253
|
+
const parent = yield* Effect.serviceOption(pendingWrites)
|
|
254
|
+
// Allow body interruption, but mask commit through publication.
|
|
255
|
+
const transaction = Effect.uninterruptibleMask(Effect.fnUntraced(function*(restore) {
|
|
256
|
+
const writes: PendingWrites = []
|
|
257
|
+
const result = yield* sql.withTransaction(
|
|
258
|
+
Effect.provideService(restore(effect), pendingWrites, writes)
|
|
259
|
+
)
|
|
260
|
+
if (parent._tag === "Some") {
|
|
261
|
+
parent.value.push(...writes)
|
|
262
|
+
} else {
|
|
263
|
+
const stores = new Map<string, Array<RemoteEntry>>()
|
|
264
|
+
for (const [storeId, entries] of writes) {
|
|
265
|
+
const existing = stores.get(storeId)
|
|
266
|
+
if (existing === undefined) {
|
|
267
|
+
stores.set(storeId, [...entries])
|
|
268
|
+
} else {
|
|
269
|
+
existing.push(...entries)
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Sibling buffers may merge out of sequence order.
|
|
273
|
+
for (const entries of stores.values()) {
|
|
274
|
+
entries.sort((a, b) => a.remoteSequence - b.remoteSequence)
|
|
275
|
+
}
|
|
276
|
+
yield* Effect.forEach(stores, publish, { discard: true })
|
|
277
|
+
}
|
|
278
|
+
return result
|
|
279
|
+
}))
|
|
280
|
+
// Wait interruptibly; nested transactions reuse the outer permit.
|
|
281
|
+
return yield* parent._tag === "Some" ? transaction : transactionSemaphore.withPermit(transaction)
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
const ensureStore = (storeId: string) =>
|
|
285
|
+
sql.onDialectOrElse({
|
|
286
|
+
pg: () =>
|
|
287
|
+
sql`
|
|
237
288
|
INSERT INTO ${storesTableSql} (store_id, next_sequence)
|
|
238
289
|
VALUES (${storeId}, 1)
|
|
239
290
|
ON CONFLICT (store_id) DO NOTHING
|
|
240
291
|
`,
|
|
241
|
-
|
|
242
|
-
|
|
292
|
+
mysql: () =>
|
|
293
|
+
sql`
|
|
243
294
|
INSERT INTO ${storesTableSql} (store_id, next_sequence)
|
|
244
295
|
VALUES (${storeId}, 1)
|
|
245
296
|
ON DUPLICATE KEY UPDATE store_id = store_id
|
|
246
297
|
`,
|
|
247
|
-
|
|
248
|
-
|
|
298
|
+
mssql: () =>
|
|
299
|
+
sql`
|
|
249
300
|
MERGE ${storesTableSql} WITH (HOLDLOCK) AS target
|
|
250
301
|
USING (SELECT ${storeId} AS store_id, 1 AS next_sequence) AS source
|
|
251
302
|
ON target.store_id = source.store_id
|
|
@@ -253,194 +304,193 @@ export const makeStorage = (options?: {
|
|
|
253
304
|
INSERT (store_id, next_sequence)
|
|
254
305
|
VALUES (source.store_id, source.next_sequence);
|
|
255
306
|
`,
|
|
256
|
-
|
|
257
|
-
|
|
307
|
+
orElse: () =>
|
|
308
|
+
sql`
|
|
258
309
|
INSERT INTO ${storesTableSql} (store_id, next_sequence)
|
|
259
310
|
VALUES (${storeId}, 1)
|
|
260
311
|
ON CONFLICT DO NOTHING
|
|
261
312
|
`
|
|
262
|
-
|
|
313
|
+
})
|
|
263
314
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
315
|
+
const lockStore = (storeId: string) =>
|
|
316
|
+
sql.onDialectOrElse({
|
|
317
|
+
pg: () =>
|
|
318
|
+
sql`
|
|
268
319
|
SELECT next_sequence
|
|
269
320
|
FROM ${storesTableSql}
|
|
270
321
|
WHERE store_id = ${storeId}
|
|
271
322
|
FOR UPDATE
|
|
272
323
|
`,
|
|
273
|
-
|
|
274
|
-
|
|
324
|
+
mysql: () =>
|
|
325
|
+
sql`
|
|
275
326
|
SELECT next_sequence
|
|
276
327
|
FROM ${storesTableSql}
|
|
277
328
|
WHERE store_id = ${storeId}
|
|
278
329
|
FOR UPDATE
|
|
279
330
|
`,
|
|
280
|
-
|
|
281
|
-
|
|
331
|
+
mssql: () =>
|
|
332
|
+
sql`
|
|
282
333
|
SELECT next_sequence
|
|
283
334
|
FROM ${storesTableSql} WITH (UPDLOCK, HOLDLOCK)
|
|
284
335
|
WHERE store_id = ${storeId}
|
|
285
336
|
`,
|
|
286
|
-
|
|
287
|
-
|
|
337
|
+
orElse: () =>
|
|
338
|
+
sql`
|
|
288
339
|
UPDATE ${storesTableSql}
|
|
289
340
|
SET next_sequence = next_sequence
|
|
290
341
|
WHERE store_id = ${storeId}
|
|
291
342
|
RETURNING next_sequence
|
|
292
343
|
`
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
344
|
+
}).pipe(
|
|
345
|
+
Effect.flatMap(decodeStoreSequence)
|
|
346
|
+
)
|
|
296
347
|
|
|
297
|
-
|
|
298
|
-
|
|
348
|
+
const setNextSequence = (storeId: string, nextSequence: number) =>
|
|
349
|
+
sql`
|
|
299
350
|
UPDATE ${storesTableSql}
|
|
300
351
|
SET next_sequence = ${nextSequence}
|
|
301
352
|
WHERE store_id = ${storeId}
|
|
302
353
|
`
|
|
303
354
|
|
|
304
|
-
|
|
305
|
-
|
|
355
|
+
const selectEntriesAfter = (storeId: string, startSequence: number) =>
|
|
356
|
+
sql`
|
|
306
357
|
SELECT sequence, entry_id, event, primary_key, payload
|
|
307
358
|
FROM ${entriesTableSql}
|
|
308
359
|
WHERE store_id = ${storeId} AND sequence >= ${startSequence}
|
|
309
360
|
ORDER BY sequence ASC
|
|
310
361
|
`.pipe(
|
|
311
|
-
|
|
312
|
-
|
|
362
|
+
Effect.flatMap(decodeRemoteEntries)
|
|
363
|
+
)
|
|
313
364
|
|
|
314
|
-
|
|
315
|
-
|
|
365
|
+
const getSessionAuthBinding = (publicKey: string) =>
|
|
366
|
+
sql`
|
|
316
367
|
SELECT public_key, signing_public_key
|
|
317
368
|
FROM ${sessionAuthBindingsTableSql}
|
|
318
369
|
WHERE public_key = ${publicKey}
|
|
319
370
|
`.pipe(
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
371
|
+
Effect.flatMap(decodeSessionAuthBindings),
|
|
372
|
+
Effect.map((rows) => {
|
|
373
|
+
const row = rows[0]
|
|
374
|
+
return row === undefined ? undefined : row.signing_public_key as Uint8Array<ArrayBuffer>
|
|
375
|
+
}),
|
|
376
|
+
Effect.orDie
|
|
377
|
+
)
|
|
327
378
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
379
|
+
return EventLogServerUnencrypted.Storage.of({
|
|
380
|
+
getId: Effect.succeed(remoteId),
|
|
381
|
+
getOrCreateSessionAuthBinding: Effect.fnUntraced(
|
|
382
|
+
function*(publicKey, signingPublicKey) {
|
|
383
|
+
const existing = yield* getSessionAuthBinding(publicKey)
|
|
384
|
+
if (existing !== undefined) {
|
|
385
|
+
return existing
|
|
386
|
+
}
|
|
387
|
+
return yield* sql`
|
|
337
388
|
INSERT INTO ${sessionAuthBindingsTableSql} (public_key, signing_public_key)
|
|
338
389
|
VALUES (${publicKey}, ${signingPublicKey})
|
|
339
390
|
`.pipe(
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
391
|
+
Effect.as(signingPublicKey)
|
|
392
|
+
)
|
|
393
|
+
},
|
|
394
|
+
sql.withTransaction,
|
|
395
|
+
Effect.orDie,
|
|
396
|
+
withTracerDisabled
|
|
397
|
+
),
|
|
398
|
+
entriesAfter: (storeId, entry) =>
|
|
399
|
+
sql`
|
|
349
400
|
SELECT sequence, entry_id, event, primary_key, payload
|
|
350
401
|
FROM ${entriesTableSql}
|
|
351
402
|
WHERE store_id = ${storeId} AND entry_id >= ${entry.id}
|
|
352
403
|
ORDER BY sequence ASC
|
|
353
404
|
`.pipe(
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
405
|
+
Effect.flatMap(decodeRemoteEntries),
|
|
406
|
+
Effect.map(Arr.map((r) => r.entry)),
|
|
407
|
+
Effect.orDie,
|
|
408
|
+
withTracerDisabled
|
|
409
|
+
),
|
|
410
|
+
write: Effect.fnUntraced(
|
|
411
|
+
function*(storeId, entries) {
|
|
412
|
+
if (entries.length === 0) {
|
|
413
|
+
return []
|
|
414
|
+
}
|
|
364
415
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
yield* sql`INSERT INTO ${entriesTableSql} ${sql.insert(rowsForInsert)}`
|
|
397
|
-
rowsForInsert = []
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
if (rowsForInsert.length > 0) {
|
|
416
|
+
yield* ensureStore(storeId)
|
|
417
|
+
const currentNextSequence = yield* lockStore(storeId)
|
|
418
|
+
|
|
419
|
+
const committed: Array<RemoteEntry> = []
|
|
420
|
+
let rowsForInsert: Array<{
|
|
421
|
+
readonly store_id: string
|
|
422
|
+
readonly sequence: number
|
|
423
|
+
readonly entry_id: Uint8Array
|
|
424
|
+
readonly event: string
|
|
425
|
+
readonly primary_key: string
|
|
426
|
+
readonly payload: Uint8Array
|
|
427
|
+
}> = []
|
|
428
|
+
|
|
429
|
+
for (let index = 0; index < entries.length; index++) {
|
|
430
|
+
const entry = entries[index]
|
|
431
|
+
const remoteSequence = currentNextSequence + index
|
|
432
|
+
committed.push(
|
|
433
|
+
new RemoteEntry({
|
|
434
|
+
remoteSequence,
|
|
435
|
+
entry
|
|
436
|
+
}, { disableChecks: true })
|
|
437
|
+
)
|
|
438
|
+
rowsForInsert.push({
|
|
439
|
+
store_id: storeId,
|
|
440
|
+
sequence: remoteSequence,
|
|
441
|
+
entry_id: entry.id,
|
|
442
|
+
event: entry.event,
|
|
443
|
+
primary_key: entry.primaryKey,
|
|
444
|
+
payload: entry.payload
|
|
445
|
+
})
|
|
446
|
+
if (rowsForInsert.length >= insertBatchSize) {
|
|
401
447
|
yield* sql`INSERT INTO ${entriesTableSql} ${sql.insert(rowsForInsert)}`
|
|
448
|
+
rowsForInsert = []
|
|
402
449
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
450
|
+
}
|
|
451
|
+
if (rowsForInsert.length > 0) {
|
|
452
|
+
yield* sql`INSERT INTO ${entriesTableSql} ${sql.insert(rowsForInsert)}`
|
|
453
|
+
}
|
|
454
|
+
const nextSequence = currentNextSequence + entries.length
|
|
455
|
+
yield* setNextSequence(storeId, nextSequence)
|
|
456
|
+
|
|
457
|
+
const writes = yield* pendingWrites
|
|
458
|
+
writes.push([storeId, committed])
|
|
459
|
+
|
|
460
|
+
return committed
|
|
461
|
+
},
|
|
462
|
+
withTransaction,
|
|
463
|
+
withTracerDisabled,
|
|
464
|
+
Effect.orDie
|
|
465
|
+
),
|
|
466
|
+
changes: Effect.fnUntraced(
|
|
467
|
+
function*({ storeId, startSequence, compactors }) {
|
|
468
|
+
const pubsub = yield* RcMap.get(pubsubs, storeId)
|
|
469
|
+
const subscription = yield* PubSub.subscribe(pubsub)
|
|
470
|
+
const backlog = yield* EventLogServerUnencrypted.compactBacklog({
|
|
471
|
+
compactors,
|
|
472
|
+
remoteEntries: yield* selectEntriesAfter(storeId, startSequence)
|
|
473
|
+
})
|
|
474
|
+
let watermark = backlog.length > 0 ? backlog[backlog.length - 1]!.remoteSequence : startSequence - 1
|
|
475
|
+
|
|
476
|
+
return Stream.fromArray(backlog).pipe(
|
|
477
|
+
Stream.concat(
|
|
478
|
+
Stream.fromSubscription(subscription).pipe(
|
|
479
|
+
Stream.filter((entry) => entry.remoteSequence > watermark)
|
|
431
480
|
)
|
|
432
481
|
)
|
|
433
|
-
},
|
|
434
|
-
Effect.orDie,
|
|
435
|
-
withTracerDisabled,
|
|
436
|
-
Stream.unwrap
|
|
437
|
-
),
|
|
438
|
-
withTransaction: (effect) =>
|
|
439
|
-
sql.withTransaction(effect).pipe(
|
|
440
|
-
Effect.catchIf(SqlError.isSqlError, Effect.die)
|
|
441
482
|
)
|
|
442
|
-
|
|
443
|
-
|
|
483
|
+
},
|
|
484
|
+
Effect.orDie,
|
|
485
|
+
withTracerDisabled,
|
|
486
|
+
Stream.unwrap
|
|
487
|
+
),
|
|
488
|
+
withTransaction: (effect) =>
|
|
489
|
+
withTransaction(effect).pipe(
|
|
490
|
+
Effect.catchIf(SqlError.isSqlError, Effect.die)
|
|
491
|
+
)
|
|
492
|
+
})
|
|
493
|
+
}, (effect, _options?: StorageOptions) => withTracerDisabled(effect))
|
|
444
494
|
|
|
445
495
|
/**
|
|
446
496
|
* Provides unencrypted server `Storage` using the SQL-backed implementation.
|
|
@@ -449,12 +499,11 @@ export const makeStorage = (options?: {
|
|
|
449
499
|
* @category layers
|
|
450
500
|
* @since 4.0.0
|
|
451
501
|
*/
|
|
452
|
-
export const layerStorage = (options?:
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
Layer.effect(EventLogServerUnencrypted.Storage)(makeStorage(options))
|
|
502
|
+
export const layerStorage = (options?: StorageOptions): Layer.Layer<
|
|
503
|
+
EventLogServerUnencrypted.Storage,
|
|
504
|
+
SqlError.SqlError,
|
|
505
|
+
SqlClient.SqlClient
|
|
506
|
+
> => Layer.effect(EventLogServerUnencrypted.Storage)(makeStorage(options))
|
|
458
507
|
|
|
459
508
|
const EntrySql = Schema.Struct({
|
|
460
509
|
entry_id: EntryId,
|
|
@@ -537,7 +586,5 @@ const decodeSessionAuthBindings = (
|
|
|
537
586
|
rows: unknown
|
|
538
587
|
): Effect.Effect<ReadonlyArray<SessionAuthBindingSql>, Schema.SchemaError> => decodeSessionAuthBindingRows(rows)
|
|
539
588
|
|
|
540
|
-
const withTracerDisabled = Effect.withTracerEnabled(false)
|
|
541
|
-
|
|
542
589
|
const isConstraintConflict = (error: SqlError.SqlError): boolean =>
|
|
543
590
|
error.reason._tag === "ConstraintError" || error.reason._tag === "UniqueViolation"
|