effect 4.0.1 → 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 +27 -7
- 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 +60 -0
- 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 +527 -0
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +240 -5
- 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 +9 -0
- 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 +19 -0
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +8 -1
- 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 +8 -0
- 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 +26 -3
- 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 +558 -0
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +261 -13
- 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.map +1 -1
- package/dist/ai/LanguageModel.js +14 -13
- package/dist/ai/LanguageModel.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 +213 -169
- package/dist/ai/McpServer.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/mcpRuntime.js +79 -46
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpStatefulRuntime.js +1 -0
- package/dist/ai/internal/mcpStatefulRuntime.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/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 +56 -39
- 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/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 -3
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +7 -4
- 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/effect.js +41 -39
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/schedule.js +7 -5
- package/dist/internal/schedule.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 +38 -20
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +18 -21
- package/dist/rpc/RpcServer.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/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 +50 -8
- package/src/Cause.ts +82 -0
- 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 +539 -5
- 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 +18 -0
- 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 +20 -1
- 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 +23 -0
- 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 +55 -3
- 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 +622 -15
- 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 +16 -19
- package/src/ai/McpServer.ts +107 -36
- package/src/ai/Telemetry.ts +62 -58
- package/src/ai/internal/mcpRuntime.ts +84 -43
- package/src/ai/internal/mcpStatefulRuntime.ts +2 -0
- package/src/cluster/K8sHttpClient.ts +12 -2
- 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 +60 -45
- package/src/http/HttpServer.ts +1 -1
- 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 -4
- 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/effect.ts +47 -45
- package/src/internal/schedule.ts +23 -17
- 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 +48 -24
- package/src/rpc/RpcServer.ts +26 -24
- 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
|
@@ -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"
|