effect 4.0.0-beta.102 → 4.0.0-beta.103
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/dist/Array.d.ts +971 -1037
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +381 -407
- package/dist/Array.js.map +1 -1
- package/dist/BigDecimal.d.ts +433 -756
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +200 -325
- package/dist/BigDecimal.js.map +1 -1
- package/dist/BigInt.d.ts +207 -267
- package/dist/BigInt.d.ts.map +1 -1
- package/dist/BigInt.js +107 -135
- package/dist/BigInt.js.map +1 -1
- package/dist/Boolean.d.ts +146 -188
- package/dist/Boolean.d.ts.map +1 -1
- package/dist/Boolean.js +64 -84
- package/dist/Boolean.js.map +1 -1
- package/dist/Brand.js.map +1 -1
- package/dist/Cache.d.ts +405 -254
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +166 -101
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +167 -277
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Cause.js +122 -176
- package/dist/Cause.js.map +1 -1
- package/dist/Channel.d.ts +729 -768
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +514 -440
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +834 -1173
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +326 -439
- package/dist/Chunk.js.map +1 -1
- package/dist/Clock.d.ts +180 -49
- package/dist/Clock.d.ts.map +1 -1
- package/dist/Clock.js +96 -31
- package/dist/Clock.js.map +1 -1
- package/dist/Combiner.d.ts +20 -33
- package/dist/Combiner.d.ts.map +1 -1
- package/dist/Combiner.js +18 -30
- package/dist/Combiner.js.map +1 -1
- package/dist/Config.d.ts +225 -173
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +336 -265
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +194 -68
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +115 -80
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Console.d.ts +233 -33
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +232 -32
- package/dist/Console.js.map +1 -1
- package/dist/Context.d.ts +151 -274
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +171 -214
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +68 -77
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +57 -66
- package/dist/Cron.js.map +1 -1
- package/dist/Crypto.d.ts +13 -15
- package/dist/Crypto.d.ts.map +1 -1
- package/dist/Crypto.js +9 -10
- package/dist/Crypto.js.map +1 -1
- package/dist/Data.d.ts +60 -80
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js +16 -23
- package/dist/Data.js.map +1 -1
- package/dist/DateTime.d.ts +562 -660
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +307 -362
- package/dist/DateTime.js.map +1 -1
- package/dist/Deferred.d.ts +253 -256
- package/dist/Deferred.d.ts.map +1 -1
- package/dist/Deferred.js +104 -96
- package/dist/Deferred.js.map +1 -1
- package/dist/Duration.d.ts +216 -308
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +132 -186
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +2841 -3247
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +1322 -1546
- package/dist/Effect.js.map +1 -1
- package/dist/Effectable.js.map +1 -1
- package/dist/Encoding.d.ts +22 -40
- package/dist/Encoding.d.ts.map +1 -1
- package/dist/Encoding.js +22 -40
- package/dist/Encoding.js.map +1 -1
- package/dist/Equal.d.ts +33 -37
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +29 -21
- package/dist/Equal.js.map +1 -1
- package/dist/Equivalence.d.ts +103 -105
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +77 -79
- package/dist/Equivalence.js.map +1 -1
- package/dist/ErrorReporter.d.ts +51 -27
- package/dist/ErrorReporter.d.ts.map +1 -1
- package/dist/ErrorReporter.js +50 -26
- package/dist/ErrorReporter.js.map +1 -1
- package/dist/ExecutionPlan.d.ts +13 -55
- package/dist/ExecutionPlan.d.ts.map +1 -1
- package/dist/ExecutionPlan.js +7 -28
- package/dist/ExecutionPlan.js.map +1 -1
- package/dist/Exit.d.ts +116 -192
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +82 -130
- package/dist/Exit.js.map +1 -1
- package/dist/Fiber.d.ts +82 -146
- package/dist/Fiber.d.ts.map +1 -1
- package/dist/Fiber.js +48 -87
- package/dist/Fiber.js.map +1 -1
- package/dist/FiberHandle.d.ts +152 -105
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +106 -73
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +213 -168
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +114 -89
- package/dist/FiberMap.js.map +1 -1
- package/dist/FiberSet.d.ts +123 -81
- package/dist/FiberSet.d.ts.map +1 -1
- package/dist/FiberSet.js +85 -59
- package/dist/FiberSet.js.map +1 -1
- package/dist/FileSystem.d.ts +153 -264
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +42 -147
- package/dist/FileSystem.js.map +1 -1
- package/dist/Filter.d.ts +61 -33
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +26 -15
- package/dist/Filter.js.map +1 -1
- package/dist/Formatter.d.ts +25 -33
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +48 -49
- package/dist/Formatter.js.map +1 -1
- package/dist/Function.d.ts +76 -145
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +40 -57
- package/dist/Function.js.map +1 -1
- package/dist/Graph.d.ts +360 -714
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +168 -297
- package/dist/Graph.js.map +1 -1
- package/dist/HKT.d.ts +12 -6
- package/dist/HKT.d.ts.map +1 -1
- package/dist/Hash.d.ts +47 -83
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +46 -68
- package/dist/Hash.js.map +1 -1
- package/dist/HashMap.d.ts +319 -411
- package/dist/HashMap.d.ts.map +1 -1
- package/dist/HashMap.js +122 -166
- package/dist/HashMap.js.map +1 -1
- package/dist/HashRing.d.ts.map +1 -1
- package/dist/HashRing.js +1 -0
- package/dist/HashRing.js.map +1 -1
- package/dist/HashSet.d.ts +177 -284
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js +68 -109
- package/dist/HashSet.js.map +1 -1
- package/dist/Inspectable.d.ts +12 -12
- package/dist/Inspectable.js +8 -8
- package/dist/Inspectable.js.map +1 -1
- package/dist/Iterable.d.ts +620 -786
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +228 -306
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonPatch.d.ts +11 -13
- package/dist/JsonPatch.d.ts.map +1 -1
- package/dist/JsonPatch.js +44 -102
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonPointer.d.ts +8 -8
- package/dist/JsonPointer.js +8 -8
- package/dist/JsonPointer.js.map +1 -1
- package/dist/JsonSchema.d.ts +98 -44
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +297 -234
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Latch.d.ts +23 -35
- package/dist/Latch.d.ts.map +1 -1
- package/dist/Latch.js +16 -28
- package/dist/Latch.js.map +1 -1
- package/dist/Layer.d.ts +359 -260
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +195 -175
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMap.d.ts +42 -29
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LayerMap.js +31 -21
- package/dist/LayerMap.js.map +1 -1
- package/dist/LayerRef.d.ts +6 -2
- package/dist/LayerRef.d.ts.map +1 -1
- package/dist/LayerRef.js +6 -2
- package/dist/LayerRef.js.map +1 -1
- package/dist/LogLevel.d.ts +114 -214
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +41 -76
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +218 -467
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +204 -450
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +7 -5
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +7 -5
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Match.d.ts +217 -252
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +150 -183
- package/dist/Match.js.map +1 -1
- package/dist/Metric.d.ts +442 -993
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +198 -642
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts +144 -173
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js +68 -79
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/MutableHashSet.d.ts +84 -89
- package/dist/MutableHashSet.d.ts.map +1 -1
- package/dist/MutableHashSet.js +44 -47
- package/dist/MutableHashSet.js.map +1 -1
- package/dist/MutableList.d.ts +71 -370
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +59 -284
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts +420 -243
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +209 -120
- package/dist/MutableRef.js.map +1 -1
- package/dist/Newtype.d.ts +21 -14
- package/dist/Newtype.d.ts.map +1 -1
- package/dist/Newtype.js +15 -13
- package/dist/Newtype.js.map +1 -1
- package/dist/NonEmptyIterable.d.ts +7 -137
- package/dist/NonEmptyIterable.d.ts.map +1 -1
- package/dist/NonEmptyIterable.js +5 -93
- package/dist/NonEmptyIterable.js.map +1 -1
- package/dist/Number.d.ts +196 -233
- package/dist/Number.d.ts.map +1 -1
- package/dist/Number.js +90 -109
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts +97 -189
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +187 -290
- package/dist/Optic.js.map +1 -1
- package/dist/Option.d.ts +447 -812
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +211 -392
- package/dist/Option.js.map +1 -1
- package/dist/Order.d.ts +109 -109
- package/dist/Order.js +91 -91
- package/dist/Order.js.map +1 -1
- package/dist/Ordering.d.ts +20 -23
- package/dist/Ordering.d.ts.map +1 -1
- package/dist/Ordering.js +8 -9
- package/dist/Ordering.js.map +1 -1
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Path.d.ts +38 -41
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +3 -4
- package/dist/Path.js.map +1 -1
- package/dist/Pipeable.d.ts +6 -5
- package/dist/Pipeable.d.ts.map +1 -1
- package/dist/Pipeable.js +2 -2
- package/dist/Pipeable.js.map +1 -1
- package/dist/PlatformError.d.ts +4 -4
- package/dist/PlatformError.js +3 -3
- package/dist/PlatformError.js.map +1 -1
- package/dist/Pool.d.ts +4 -2
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +4 -2
- package/dist/Pool.js.map +1 -1
- package/dist/Predicate.d.ts +200 -181
- package/dist/Predicate.d.ts.map +1 -1
- package/dist/Predicate.js +100 -108
- package/dist/Predicate.js.map +1 -1
- package/dist/PrimaryKey.d.ts +7 -7
- package/dist/PrimaryKey.js +5 -5
- package/dist/PrimaryKey.js.map +1 -1
- package/dist/PubSub.d.ts +425 -494
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +373 -362
- package/dist/PubSub.js.map +1 -1
- package/dist/Pull.d.ts +24 -18
- package/dist/Pull.d.ts.map +1 -1
- package/dist/Pull.js +11 -9
- package/dist/Pull.js.map +1 -1
- package/dist/Queue.d.ts +200 -159
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +162 -132
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts +49 -74
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +35 -54
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +121 -63
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +42 -21
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +24 -13
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/RcRef.js +15 -9
- package/dist/RcRef.js.map +1 -1
- package/dist/Record.d.ts +291 -488
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +111 -202
- package/dist/Record.js.map +1 -1
- package/dist/Redactable.d.ts +6 -2
- package/dist/Redactable.d.ts.map +1 -1
- package/dist/Redactable.js +7 -2
- package/dist/Redactable.js.map +1 -1
- package/dist/Redacted.d.ts +25 -25
- package/dist/Redacted.d.ts.map +1 -1
- package/dist/Redacted.js +19 -20
- package/dist/Redacted.js.map +1 -1
- package/dist/Reducer.d.ts +8 -15
- package/dist/Reducer.d.ts.map +1 -1
- package/dist/Reducer.js +6 -12
- package/dist/Reducer.js.map +1 -1
- package/dist/Ref.d.ts +95 -165
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +75 -122
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +102 -168
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +102 -168
- package/dist/References.js.map +1 -1
- package/dist/RegExp.d.ts +10 -14
- package/dist/RegExp.d.ts.map +1 -1
- package/dist/RegExp.js +10 -14
- package/dist/RegExp.js.map +1 -1
- package/dist/Request.d.ts +31 -21
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js +16 -13
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts +201 -90
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +87 -41
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Result.d.ts +302 -470
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +133 -217
- package/dist/Result.js.map +1 -1
- package/dist/Runtime.d.ts +50 -75
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +39 -60
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts +290 -1636
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +162 -803
- package/dist/Schedule.js.map +1 -1
- package/dist/Scheduler.d.ts +5 -5
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +18 -6
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +644 -642
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +491 -527
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +27 -50
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +366 -279
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaError.d.ts +7 -6
- package/dist/SchemaError.d.ts.map +1 -1
- package/dist/SchemaError.js +7 -6
- package/dist/SchemaError.js.map +1 -1
- package/dist/SchemaGetter.d.ts +217 -174
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +218 -185
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +62 -190
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +73 -265
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaParser.d.ts +2 -2
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +123 -75
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +22 -36
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +20 -26
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +114 -74
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +120 -85
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Scope.d.ts +123 -151
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +72 -92
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/ScopedRef.d.ts +3 -3
- package/dist/ScopedRef.js +2 -2
- package/dist/ScopedRef.js.map +1 -1
- package/dist/Semaphore.d.ts +96 -10
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +78 -39
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts +117 -107
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +107 -100
- package/dist/Sink.js.map +1 -1
- package/dist/Stdio.d.ts +1 -1
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +2415 -2949
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +1078 -1381
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +262 -308
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +184 -215
- package/dist/String.js.map +1 -1
- package/dist/Struct.d.ts +109 -114
- package/dist/Struct.d.ts.map +1 -1
- package/dist/Struct.js +41 -50
- package/dist/Struct.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +282 -250
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +104 -92
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/Symbol.d.ts +3 -3
- package/dist/Symbol.js +3 -3
- package/dist/Symbol.js.map +1 -1
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Take.js.map +1 -1
- package/dist/Terminal.d.ts +2 -2
- package/dist/Terminal.js +1 -1
- package/dist/Terminal.js.map +1 -1
- package/dist/Tracer.d.ts +100 -54
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +41 -24
- package/dist/Tracer.js.map +1 -1
- package/dist/Trie.d.ts +287 -679
- package/dist/Trie.d.ts.map +1 -1
- package/dist/Trie.js +109 -251
- package/dist/Trie.js.map +1 -1
- package/dist/Tuple.d.ts +92 -127
- package/dist/Tuple.d.ts.map +1 -1
- package/dist/Tuple.js +42 -57
- package/dist/Tuple.js.map +1 -1
- package/dist/TxChunk.d.ts +201 -121
- package/dist/TxChunk.d.ts.map +1 -1
- package/dist/TxChunk.js +85 -56
- package/dist/TxChunk.js.map +1 -1
- package/dist/TxDeferred.d.ts +62 -46
- package/dist/TxDeferred.d.ts.map +1 -1
- package/dist/TxDeferred.js +30 -22
- package/dist/TxDeferred.js.map +1 -1
- package/dist/TxHashMap.d.ts +631 -779
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +268 -330
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +297 -236
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +130 -100
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +126 -95
- package/dist/TxPriorityQueue.d.ts.map +1 -1
- package/dist/TxPriorityQueue.js +74 -56
- package/dist/TxPriorityQueue.js.map +1 -1
- package/dist/TxPubSub.d.ts +101 -88
- package/dist/TxPubSub.d.ts.map +1 -1
- package/dist/TxPubSub.js +87 -66
- package/dist/TxPubSub.js.map +1 -1
- package/dist/TxQueue.d.ts +200 -180
- package/dist/TxQueue.d.ts.map +1 -1
- package/dist/TxQueue.js +160 -136
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +97 -66
- package/dist/TxReentrantLock.d.ts.map +1 -1
- package/dist/TxReentrantLock.js +67 -45
- package/dist/TxReentrantLock.js.map +1 -1
- package/dist/TxRef.d.ts +51 -32
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +23 -15
- package/dist/TxRef.js.map +1 -1
- package/dist/TxSemaphore.d.ts +129 -95
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +85 -70
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/TxSubscriptionRef.d.ts +97 -70
- package/dist/TxSubscriptionRef.d.ts.map +1 -1
- package/dist/TxSubscriptionRef.js +44 -34
- package/dist/TxSubscriptionRef.js.map +1 -1
- package/dist/Types.d.ts +126 -67
- package/dist/Types.d.ts.map +1 -1
- package/dist/UndefinedOr.js.map +1 -1
- package/dist/Unify.d.ts +45 -65
- package/dist/Unify.d.ts.map +1 -1
- package/dist/Unify.js +6 -9
- package/dist/Unify.js.map +1 -1
- package/dist/Utils.d.ts +23 -16
- package/dist/Utils.d.ts.map +1 -1
- package/dist/Utils.js +3 -7
- package/dist/Utils.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/array.js.map +1 -1
- package/dist/internal/core.js +1 -1
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +4 -0
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/doNotation.js.map +1 -1
- package/dist/internal/effect.js +77 -40
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js.map +1 -1
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/executionPlan.js.map +1 -1
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hashSet.js.map +1 -1
- package/dist/internal/layer.js.map +1 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/metric.js.map +1 -1
- package/dist/internal/option.js.map +1 -1
- package/dist/internal/persistence.d.ts +2 -0
- package/dist/internal/persistence.d.ts.map +1 -0
- package/dist/internal/persistence.js +3 -0
- package/dist/internal/persistence.js.map +1 -0
- package/dist/internal/random.js.map +1 -1
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/redacted.js.map +1 -1
- package/dist/internal/references.js +3 -0
- package/dist/internal/references.js.map +1 -1
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/result.js.map +1 -1
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/annotations.js.map +1 -1
- package/dist/internal/schema/cause.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +13 -11
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/fromRepresentation.js +8 -15
- package/dist/internal/schema/fromRepresentation.js.map +1 -1
- package/dist/internal/schema/parser.d.ts +14 -0
- package/dist/internal/schema/parser.d.ts.map +1 -0
- package/dist/internal/schema/parser.js +13 -0
- package/dist/internal/schema/parser.js.map +1 -0
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/toArbitrary.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toEquivalence.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +48 -6
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toRepresentation.js +87 -107
- package/dist/internal/schema/toRepresentation.js.map +1 -1
- package/dist/internal/stackTraceLimit.js.map +1 -1
- package/dist/internal/stream.js.map +1 -1
- package/dist/internal/tracer.js.map +1 -1
- package/dist/internal/trie.js +13 -9
- package/dist/internal/trie.js.map +1 -1
- package/dist/testing/FastCheck.d.ts +8 -7
- package/dist/testing/FastCheck.d.ts.map +1 -1
- package/dist/testing/FastCheck.js +8 -7
- package/dist/testing/FastCheck.js.map +1 -1
- package/dist/testing/TestClock.d.ts +57 -28
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +50 -18
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestConsole.d.ts +32 -31
- package/dist/testing/TestConsole.d.ts.map +1 -1
- package/dist/testing/TestConsole.js +24 -22
- package/dist/testing/TestConsole.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +29 -29
- package/dist/testing/TestSchema.js +25 -25
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +95 -118
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +94 -117
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +132 -97
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +55 -51
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
- package/dist/unstable/ai/IdGenerator.d.ts +32 -28
- package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
- package/dist/unstable/ai/IdGenerator.js +26 -21
- package/dist/unstable/ai/IdGenerator.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +107 -67
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +104 -64
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpProtocol.d.ts +30 -0
- package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/McpProtocol.js +20 -0
- package/dist/unstable/ai/McpProtocol.js.map +1 -0
- package/dist/unstable/ai/McpSchema.d.ts +141 -75
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +58 -50
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +68 -59
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +694 -241
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Model.d.ts +8 -19
- package/dist/unstable/ai/Model.d.ts.map +1 -1
- package/dist/unstable/ai/Model.js +9 -20
- package/dist/unstable/ai/Model.js.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +112 -38
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Prompt.js +53 -17
- package/dist/unstable/ai/Prompt.js.map +1 -1
- package/dist/unstable/ai/Response.d.ts +28 -14
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +9 -4
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
- package/dist/unstable/ai/Telemetry.d.ts +46 -13
- package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
- package/dist/unstable/ai/Telemetry.js +18 -7
- package/dist/unstable/ai/Telemetry.js.map +1 -1
- package/dist/unstable/ai/Tokenizer.d.ts +14 -3
- package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
- package/dist/unstable/ai/Tokenizer.js +10 -2
- package/dist/unstable/ai/Tokenizer.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +59 -44
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +48 -39
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/Toolkit.d.ts +26 -8
- package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
- package/dist/unstable/ai/Toolkit.js +18 -4
- package/dist/unstable/ai/Toolkit.js.map +1 -1
- package/dist/unstable/ai/index.d.ts +4 -0
- package/dist/unstable/ai/index.d.ts.map +1 -1
- package/dist/unstable/ai/index.js +4 -0
- package/dist/unstable/ai/index.js.map +1 -1
- package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
- package/dist/unstable/ai/internal/mcpProtocol.d.ts +21 -0
- package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol.js +22 -0
- package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.js +32 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
- package/dist/unstable/ai/internal/structured-output.js +14 -15
- package/dist/unstable/ai/internal/structured-output.js.map +1 -1
- package/dist/unstable/cli/Argument.d.ts +273 -69
- package/dist/unstable/cli/Argument.d.ts.map +1 -1
- package/dist/unstable/cli/Argument.js +111 -33
- package/dist/unstable/cli/Argument.js.map +1 -1
- package/dist/unstable/cli/CliConfig.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +69 -76
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +57 -61
- package/dist/unstable/cli/CliError.js.map +1 -1
- package/dist/unstable/cli/CliOutput.d.ts +35 -54
- package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
- package/dist/unstable/cli/CliOutput.js +26 -42
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +705 -107
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +238 -42
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/Completions.js.map +1 -1
- package/dist/unstable/cli/Flag.d.ts +418 -138
- package/dist/unstable/cli/Flag.d.ts.map +1 -1
- package/dist/unstable/cli/Flag.js +197 -71
- package/dist/unstable/cli/Flag.js.map +1 -1
- package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
- package/dist/unstable/cli/GlobalFlag.js.map +1 -1
- package/dist/unstable/cli/HelpDoc.d.ts +12 -4
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/Param.d.ts +292 -78
- package/dist/unstable/cli/Param.d.ts.map +1 -1
- package/dist/unstable/cli/Param.js +128 -46
- package/dist/unstable/cli/Param.js.map +1 -1
- package/dist/unstable/cli/Primitive.d.ts +370 -149
- package/dist/unstable/cli/Primitive.d.ts.map +1 -1
- package/dist/unstable/cli/Primitive.js +344 -136
- package/dist/unstable/cli/Primitive.js.map +1 -1
- package/dist/unstable/cli/Prompt.d.ts +23 -14
- package/dist/unstable/cli/Prompt.d.ts.map +1 -1
- package/dist/unstable/cli/Prompt.js +23 -14
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cli/index.js.map +1 -1
- package/dist/unstable/cli/internal/ansi.js.map +1 -1
- package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
- package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
- package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
- package/dist/unstable/cli/internal/config.js.map +1 -1
- package/dist/unstable/cli/internal/help.js.map +1 -1
- package/dist/unstable/cli/internal/lexer.js +17 -7
- package/dist/unstable/cli/internal/lexer.js.map +1 -1
- package/dist/unstable/cli/internal/parser.js +2 -2
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cli/internal/wizard.js.map +1 -1
- package/dist/unstable/cluster/ClusterCron.js.map +1 -1
- package/dist/unstable/cluster/ClusterError.js.map +1 -1
- package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
- package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
- package/dist/unstable/cluster/ClusterSchema.js +8 -8
- package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +5 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/DeliverAt.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +10 -10
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js +8 -8
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/EntityAddress.js.map +1 -1
- package/dist/unstable/cluster/EntityId.js.map +1 -1
- package/dist/unstable/cluster/EntityProxy.d.ts +4 -2
- package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityProxy.js +4 -2
- package/dist/unstable/cluster/EntityProxy.js.map +1 -1
- package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
- package/dist/unstable/cluster/EntityResource.d.ts +2 -2
- package/dist/unstable/cluster/EntityResource.js +2 -2
- package/dist/unstable/cluster/EntityResource.js.map +1 -1
- package/dist/unstable/cluster/EntityType.js.map +1 -1
- package/dist/unstable/cluster/Envelope.d.ts +3 -3
- package/dist/unstable/cluster/Envelope.js +3 -3
- package/dist/unstable/cluster/Envelope.js.map +1 -1
- package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
- package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
- package/dist/unstable/cluster/HttpRunner.js +6 -4
- package/dist/unstable/cluster/HttpRunner.js.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/MachineId.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +9 -9
- package/dist/unstable/cluster/Message.js +6 -6
- package/dist/unstable/cluster/Message.js.map +1 -1
- package/dist/unstable/cluster/MessageStorage.d.ts +15 -15
- package/dist/unstable/cluster/MessageStorage.js +5 -5
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts.map +1 -1
- package/dist/unstable/cluster/Reply.js +4 -4
- package/dist/unstable/cluster/Reply.js.map +1 -1
- package/dist/unstable/cluster/Runner.js.map +1 -1
- package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
- package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
- package/dist/unstable/cluster/RunnerHealth.js +1 -1
- package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
- package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
- package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerServer.js +16 -16
- package/dist/unstable/cluster/RunnerServer.js.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.d.ts +2 -2
- package/dist/unstable/cluster/RunnerStorage.js +1 -1
- package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/Runners.d.ts +6 -6
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +19 -10
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/ShardId.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +3 -2
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +3 -3
- package/dist/unstable/cluster/ShardingConfig.js +3 -3
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
- package/dist/unstable/cluster/SingleRunner.js.map +1 -1
- package/dist/unstable/cluster/Singleton.js.map +1 -1
- package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
- package/dist/unstable/cluster/SingletonAddress.js +1 -1
- package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
- package/dist/unstable/cluster/Snowflake.d.ts +8 -8
- package/dist/unstable/cluster/Snowflake.js +8 -8
- package/dist/unstable/cluster/Snowflake.js.map +1 -1
- package/dist/unstable/cluster/SocketRunner.js.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js +20 -5
- package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/TestRunner.js.map +1 -1
- package/dist/unstable/cluster/index.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +5 -5
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
- package/dist/unstable/cluster/internal/hash.js.map +1 -1
- package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/cluster/internal/shardLock.js.map +1 -1
- package/dist/unstable/devtools/DevTools.js.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
- package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
- package/dist/unstable/devtools/index.js.map +1 -1
- package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
- package/dist/unstable/encoding/Msgpack.js +6 -8
- package/dist/unstable/encoding/Msgpack.js.map +1 -1
- package/dist/unstable/encoding/Ndjson.js.map +1 -1
- package/dist/unstable/encoding/Sse.d.ts +72 -8
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js +58 -8
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/encoding/index.js.map +1 -1
- package/dist/unstable/eventlog/Event.d.ts +20 -20
- package/dist/unstable/eventlog/Event.js.map +1 -1
- package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
- package/dist/unstable/eventlog/EventGroup.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +15 -15
- package/dist/unstable/eventlog/EventJournal.js +13 -13
- package/dist/unstable/eventlog/EventJournal.js.map +1 -1
- package/dist/unstable/eventlog/EventLog.d.ts +3 -3
- package/dist/unstable/eventlog/EventLog.js +3 -3
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.d.ts +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.d.ts +2 -2
- package/dist/unstable/eventlog/EventLogMessage.js +1 -1
- package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
- package/dist/unstable/eventlog/EventLogRemote.js +1 -1
- package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
- package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.js +45 -21
- package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServerEncrypted.js +13 -5
- package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js +14 -6
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/eventlog/index.js.map +1 -1
- package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
- package/dist/unstable/http/Cookies.d.ts +2 -2
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +30 -18
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Etag.d.ts +1 -1
- package/dist/unstable/http/Etag.js +1 -1
- package/dist/unstable/http/Etag.js.map +1 -1
- package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/unstable/http/FetchHttpClient.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts +2 -2
- package/dist/unstable/http/Headers.js +2 -2
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +5 -3
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +11 -5
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +51 -44
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +46 -17
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.js.map +1 -1
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +2 -0
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
- package/dist/unstable/http/HttpClientResponse.js +2 -2
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +6 -6
- package/dist/unstable/http/HttpEffect.js +3 -3
- package/dist/unstable/http/HttpEffect.js.map +1 -1
- package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
- package/dist/unstable/http/HttpMethod.d.ts +6 -9
- package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
- package/dist/unstable/http/HttpMethod.js +6 -9
- package/dist/unstable/http/HttpMethod.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +164 -39
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpPlatform.d.ts +76 -0
- package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
- package/dist/unstable/http/HttpPlatform.js +32 -0
- package/dist/unstable/http/HttpPlatform.js.map +1 -1
- package/dist/unstable/http/HttpRouter.d.ts +88 -89
- package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
- package/dist/unstable/http/HttpRouter.js +78 -79
- package/dist/unstable/http/HttpRouter.js.map +1 -1
- package/dist/unstable/http/HttpServer.d.ts +13 -13
- package/dist/unstable/http/HttpServer.js +6 -6
- package/dist/unstable/http/HttpServer.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +2 -2
- package/dist/unstable/http/HttpServerError.js +2 -2
- package/dist/unstable/http/HttpServerError.js.map +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
- package/dist/unstable/http/HttpServerRequest.js +4 -4
- package/dist/unstable/http/HttpServerRequest.js.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +10 -0
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
- package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/unstable/http/HttpStaticServer.js +35 -7
- package/dist/unstable/http/HttpStaticServer.js.map +1 -1
- package/dist/unstable/http/HttpTraceContext.js.map +1 -1
- package/dist/unstable/http/Multipart.d.ts +6 -6
- package/dist/unstable/http/Multipart.js +5 -5
- package/dist/unstable/http/Multipart.js.map +1 -1
- package/dist/unstable/http/Template.js.map +1 -1
- package/dist/unstable/http/Url.d.ts +33 -63
- package/dist/unstable/http/Url.d.ts.map +1 -1
- package/dist/unstable/http/Url.js +14 -28
- package/dist/unstable/http/Url.js.map +1 -1
- package/dist/unstable/http/UrlParams.d.ts +10 -18
- package/dist/unstable/http/UrlParams.d.ts.map +1 -1
- package/dist/unstable/http/UrlParams.js +9 -17
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/http/index.js.map +1 -1
- package/dist/unstable/http/internal/compression.d.ts +2 -0
- package/dist/unstable/http/internal/compression.d.ts.map +1 -0
- package/dist/unstable/http/internal/compression.js +155 -0
- package/dist/unstable/http/internal/compression.js.map +1 -0
- package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +10 -11
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +11 -13
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +42 -42
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +13 -13
- package/dist/unstable/httpapi/HttpApiError.js +13 -13
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
- package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
- package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
- package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.d.ts +6 -6
- package/dist/unstable/httpapi/HttpApiSchema.js +4 -4
- package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts +13 -13
- package/dist/unstable/httpapi/OpenApi.js +13 -13
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/httpapi/index.js.map +1 -1
- package/dist/unstable/httpapi/internal/html.js.map +1 -1
- package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
- package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
- package/dist/unstable/observability/Otlp.js.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +12 -14
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +17 -4
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +4 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
- package/dist/unstable/observability/OtlpResource.d.ts +16 -7
- package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpResource.js +21 -12
- package/dist/unstable/observability/OtlpResource.js.map +1 -1
- package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
- package/dist/unstable/observability/OtlpTracer.js.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
- package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.js +10 -3
- package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
- package/dist/unstable/observability/index.js.map +1 -1
- package/dist/unstable/observability/internal/otlpEnv.js +1 -1
- package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
- package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
- package/dist/unstable/observability/internal/protobuf.js +3 -0
- package/dist/unstable/observability/internal/protobuf.js.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
- package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.js +22 -13
- package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
- package/dist/unstable/persistence/Persistable.d.ts +8 -8
- package/dist/unstable/persistence/Persistable.js.map +1 -1
- package/dist/unstable/persistence/PersistedCache.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
- package/dist/unstable/persistence/PersistedQueue.js +6 -6
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +3 -3
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +91 -15
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +26 -15
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +24 -13
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/persistence/Redis.d.ts +2 -2
- package/dist/unstable/persistence/Redis.js +1 -1
- package/dist/unstable/persistence/Redis.js.map +1 -1
- package/dist/unstable/persistence/index.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +64 -21
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcess.js +14 -5
- package/dist/unstable/process/ChildProcess.js.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/process/index.js.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
- package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.js +10 -10
- package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +25 -22
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +14 -13
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRef.js.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.js +24 -3
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +4 -1
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/reactivity/Hydration.d.ts +1 -1
- package/dist/unstable/reactivity/Hydration.js +1 -1
- package/dist/unstable/reactivity/Hydration.js.map +1 -1
- package/dist/unstable/reactivity/Reactivity.js.map +1 -1
- package/dist/unstable/reactivity/index.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +35 -33
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js +4 -2
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +12 -12
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +12 -11
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcClientError.js.map +1 -1
- package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
- package/dist/unstable/rpc/RpcGroup.js +1 -1
- package/dist/unstable/rpc/RpcGroup.js.map +1 -1
- package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
- package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcMessage.js +6 -6
- package/dist/unstable/rpc/RpcMessage.js.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
- package/dist/unstable/rpc/RpcMiddleware.js +1 -1
- package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
- package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
- package/dist/unstable/rpc/RpcSchema.js +3 -3
- package/dist/unstable/rpc/RpcSchema.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
- package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +175 -96
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +13 -13
- package/dist/unstable/rpc/RpcServer.js +17 -13
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/RpcTest.js.map +1 -1
- package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
- package/dist/unstable/rpc/RpcWorker.js +4 -4
- package/dist/unstable/rpc/RpcWorker.js.map +1 -1
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/rpc/index.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +52 -50
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/Model.js +35 -33
- package/dist/unstable/schema/Model.js.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +5 -5
- package/dist/unstable/schema/VariantSchema.js +2 -2
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/schema/index.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +11 -3
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +9 -4
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/socket/SocketServer.js.map +1 -1
- package/dist/unstable/socket/index.js.map +1 -1
- package/dist/unstable/sql/Migrator.js.map +1 -1
- package/dist/unstable/sql/SqlClient.d.ts +1 -1
- package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
- package/dist/unstable/sql/SqlClient.js +2 -2
- package/dist/unstable/sql/SqlClient.js.map +1 -1
- package/dist/unstable/sql/SqlConnection.js.map +1 -1
- package/dist/unstable/sql/SqlError.js.map +1 -1
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.js +2 -2
- package/dist/unstable/sql/SqlModel.js.map +1 -1
- package/dist/unstable/sql/SqlResolver.d.ts +5 -5
- package/dist/unstable/sql/SqlResolver.js +2 -2
- package/dist/unstable/sql/SqlResolver.js.map +1 -1
- package/dist/unstable/sql/SqlSchema.js.map +1 -1
- package/dist/unstable/sql/SqlStream.js.map +1 -1
- package/dist/unstable/sql/Statement.d.ts +6 -6
- package/dist/unstable/sql/Statement.js +15 -15
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/sql/index.js.map +1 -1
- package/dist/unstable/workers/Transferable.d.ts +1 -1
- package/dist/unstable/workers/Transferable.js +1 -1
- package/dist/unstable/workers/Transferable.js.map +1 -1
- package/dist/unstable/workers/Worker.d.ts +2 -2
- package/dist/unstable/workers/Worker.js +2 -2
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workers/WorkerError.d.ts +7 -7
- package/dist/unstable/workers/WorkerError.js +6 -6
- package/dist/unstable/workers/WorkerError.js.map +1 -1
- package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
- package/dist/unstable/workers/WorkerRunner.js +1 -1
- package/dist/unstable/workers/WorkerRunner.js.map +1 -1
- package/dist/unstable/workers/index.js.map +1 -1
- package/dist/unstable/workflow/Activity.d.ts +2 -2
- package/dist/unstable/workflow/Activity.js +2 -2
- package/dist/unstable/workflow/Activity.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +1 -1
- package/dist/unstable/workflow/DurableClock.js +1 -1
- package/dist/unstable/workflow/DurableClock.js.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
- package/dist/unstable/workflow/DurableDeferred.js +5 -5
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
- package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableQueue.js +22 -20
- package/dist/unstable/workflow/DurableQueue.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +21 -21
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/dist/unstable/workflow/Workflow.js +13 -14
- package/dist/unstable/workflow/Workflow.js.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
- package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowProxy.js +4 -2
- package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
- package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
- package/dist/unstable/workflow/index.js.map +1 -1
- package/dist/unstable/workflow/internal/crypto.js.map +1 -1
- package/package.json +5 -6
- package/src/Array.ts +982 -1045
- package/src/BigDecimal.ts +433 -756
- package/src/BigInt.ts +213 -269
- package/src/Boolean.ts +146 -188
- package/src/Cache.ts +409 -255
- package/src/Cause.ts +167 -277
- package/src/Channel.ts +891 -816
- package/src/ChannelSchema.ts +1 -1
- package/src/Chunk.ts +841 -1181
- package/src/Clock.ts +181 -49
- package/src/Combiner.ts +20 -33
- package/src/Config.ts +615 -332
- package/src/ConfigProvider.ts +214 -120
- package/src/Console.ts +289 -39
- package/src/Context.ts +319 -378
- package/src/Cron.ts +68 -77
- package/src/Crypto.ts +13 -15
- package/src/Data.ts +60 -80
- package/src/DateTime.ts +564 -660
- package/src/Deferred.ts +253 -256
- package/src/Duration.ts +216 -308
- package/src/Effect.ts +2893 -3279
- package/src/Encoding.ts +22 -40
- package/src/Equal.ts +49 -39
- package/src/Equivalence.ts +103 -105
- package/src/ErrorReporter.ts +51 -27
- package/src/ExecutionPlan.ts +13 -55
- package/src/Exit.ts +116 -192
- package/src/Fiber.ts +81 -148
- package/src/FiberHandle.ts +152 -105
- package/src/FiberMap.ts +225 -174
- package/src/FiberSet.ts +124 -82
- package/src/FileSystem.ts +155 -263
- package/src/Filter.ts +61 -33
- package/src/Formatter.ts +54 -56
- package/src/Function.ts +76 -145
- package/src/Graph.ts +416 -770
- package/src/HKT.ts +12 -6
- package/src/Hash.ts +52 -83
- package/src/HashMap.ts +319 -411
- package/src/HashRing.ts +1 -0
- package/src/HashSet.ts +177 -284
- package/src/Inspectable.ts +12 -12
- package/src/Iterable.ts +620 -786
- package/src/JsonPatch.ts +58 -112
- package/src/JsonPointer.ts +8 -8
- package/src/JsonSchema.ts +402 -244
- package/src/Latch.ts +23 -35
- package/src/Layer.ts +359 -260
- package/src/LayerMap.ts +49 -29
- package/src/LayerRef.ts +6 -2
- package/src/LogLevel.ts +114 -214
- package/src/Logger.ts +344 -697
- package/src/ManagedRuntime.ts +7 -5
- package/src/Match.ts +217 -252
- package/src/Metric.ts +516 -1089
- package/src/MutableHashMap.ts +218 -255
- package/src/MutableHashSet.ts +84 -89
- package/src/MutableList.ts +73 -370
- package/src/MutableRef.ts +420 -243
- package/src/Newtype.ts +21 -14
- package/src/NonEmptyIterable.ts +7 -137
- package/src/Number.ts +196 -233
- package/src/Optic.ts +243 -383
- package/src/Option.ts +447 -812
- package/src/Order.ts +109 -109
- package/src/Ordering.ts +20 -23
- package/src/Path.ts +38 -41
- package/src/Pipeable.ts +6 -5
- package/src/PlatformError.ts +4 -4
- package/src/Pool.ts +4 -2
- package/src/Predicate.ts +200 -181
- package/src/PrimaryKey.ts +7 -7
- package/src/PubSub.ts +526 -552
- package/src/Pull.ts +24 -18
- package/src/Queue.ts +200 -159
- package/src/Random.ts +49 -74
- package/src/RcMap.ts +121 -63
- package/src/RcRef.ts +24 -13
- package/src/Record.ts +291 -488
- package/src/Redactable.ts +10 -3
- package/src/Redacted.ts +25 -25
- package/src/Reducer.ts +8 -15
- package/src/Ref.ts +221 -361
- package/src/References.ts +102 -168
- package/src/RegExp.ts +10 -14
- package/src/Request.ts +31 -21
- package/src/RequestResolver.ts +202 -91
- package/src/Result.ts +312 -484
- package/src/Runtime.ts +50 -75
- package/src/Schedule.ts +308 -1734
- package/src/Scheduler.ts +20 -7
- package/src/Schema.ts +716 -745
- package/src/SchemaAST.ts +466 -358
- package/src/SchemaError.ts +7 -6
- package/src/SchemaGetter.ts +242 -190
- package/src/SchemaIssue.ts +89 -275
- package/src/SchemaParser.ts +180 -93
- package/src/SchemaRepresentation.ts +22 -40
- package/src/SchemaTransformation.ts +129 -88
- package/src/Scope.ts +123 -151
- package/src/ScopedRef.ts +4 -4
- package/src/Semaphore.ts +152 -51
- package/src/Sink.ts +128 -113
- package/src/Stdio.ts +1 -1
- package/src/Stream.ts +2602 -3123
- package/src/String.ts +275 -312
- package/src/Struct.ts +109 -114
- package/src/SubscriptionRef.ts +284 -252
- package/src/Symbol.ts +3 -3
- package/src/Terminal.ts +2 -2
- package/src/Tracer.ts +102 -55
- package/src/Trie.ts +287 -679
- package/src/Tuple.ts +92 -127
- package/src/TxChunk.ts +201 -121
- package/src/TxDeferred.ts +62 -46
- package/src/TxHashMap.ts +645 -799
- package/src/TxHashSet.ts +443 -356
- package/src/TxPriorityQueue.ts +130 -98
- package/src/TxPubSub.ts +107 -80
- package/src/TxQueue.ts +214 -183
- package/src/TxReentrantLock.ts +97 -66
- package/src/TxRef.ts +51 -32
- package/src/TxSemaphore.ts +129 -95
- package/src/TxSubscriptionRef.ts +97 -70
- package/src/Types.ts +126 -67
- package/src/Unify.ts +45 -65
- package/src/Utils.ts +23 -16
- package/src/internal/core.ts +2 -2
- package/src/internal/dateTime.ts +6 -0
- package/src/internal/effect.ts +93 -48
- package/src/internal/persistence.ts +2 -0
- package/src/internal/references.ts +3 -2
- package/src/internal/schema/fromJsonSchemaDocument.ts +15 -13
- package/src/internal/schema/fromRepresentation.ts +10 -16
- package/src/internal/schema/parser.ts +22 -0
- package/src/internal/schema/toJsonSchemaDocument.ts +60 -6
- package/src/internal/schema/toRepresentation.ts +104 -119
- package/src/internal/trie.ts +10 -11
- package/src/testing/FastCheck.ts +8 -7
- package/src/testing/TestClock.ts +72 -30
- package/src/testing/TestConsole.ts +32 -31
- package/src/testing/TestSchema.ts +29 -29
- package/src/unstable/ai/AiError.ts +95 -118
- package/src/unstable/ai/AnthropicStructuredOutput.ts +1 -1
- package/src/unstable/ai/Chat.ts +132 -97
- package/src/unstable/ai/IdGenerator.ts +32 -28
- package/src/unstable/ai/LanguageModel.ts +107 -67
- package/src/unstable/ai/McpProtocol.ts +48 -0
- package/src/unstable/ai/McpSchema.ts +60 -50
- package/src/unstable/ai/McpServer.ts +930 -304
- package/src/unstable/ai/Model.ts +9 -20
- package/src/unstable/ai/OpenAiStructuredOutput.ts +1 -1
- package/src/unstable/ai/Prompt.ts +145 -43
- package/src/unstable/ai/Response.ts +28 -14
- package/src/unstable/ai/Telemetry.ts +46 -13
- package/src/unstable/ai/Tokenizer.ts +14 -3
- package/src/unstable/ai/Tool.ts +59 -44
- package/src/unstable/ai/Toolkit.ts +26 -8
- package/src/unstable/ai/index.ts +5 -0
- package/src/unstable/ai/internal/mcpProtocol.ts +85 -0
- package/src/unstable/ai/internal/mcpProtocolRegistry.ts +70 -0
- package/src/unstable/ai/internal/structured-output.ts +13 -18
- package/src/unstable/cli/Argument.ts +273 -69
- package/src/unstable/cli/CliError.ts +69 -76
- package/src/unstable/cli/CliOutput.ts +44 -58
- package/src/unstable/cli/Command.ts +705 -107
- package/src/unstable/cli/Flag.ts +418 -138
- package/src/unstable/cli/GlobalFlag.ts +1 -1
- package/src/unstable/cli/HelpDoc.ts +12 -4
- package/src/unstable/cli/Param.ts +292 -78
- package/src/unstable/cli/Primitive.ts +370 -149
- package/src/unstable/cli/Prompt.ts +28 -14
- package/src/unstable/cli/internal/lexer.ts +8 -2
- package/src/unstable/cli/internal/parser.ts +2 -2
- package/src/unstable/cluster/ClusterSchema.ts +8 -8
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +5 -1
- package/src/unstable/cluster/Entity.ts +15 -16
- package/src/unstable/cluster/EntityProxy.ts +4 -2
- package/src/unstable/cluster/EntityResource.ts +2 -2
- package/src/unstable/cluster/Envelope.ts +3 -3
- package/src/unstable/cluster/HttpRunner.ts +6 -4
- package/src/unstable/cluster/Message.ts +9 -9
- package/src/unstable/cluster/MessageStorage.ts +15 -15
- package/src/unstable/cluster/Reply.ts +4 -6
- package/src/unstable/cluster/RunnerHealth.ts +1 -1
- package/src/unstable/cluster/RunnerServer.ts +41 -8
- package/src/unstable/cluster/RunnerStorage.ts +2 -2
- package/src/unstable/cluster/Runners.ts +23 -12
- package/src/unstable/cluster/Sharding.ts +7 -8
- package/src/unstable/cluster/ShardingConfig.ts +3 -3
- package/src/unstable/cluster/SingletonAddress.ts +1 -1
- package/src/unstable/cluster/Snowflake.ts +8 -8
- package/src/unstable/cluster/SqlMessageStorage.ts +1 -1
- package/src/unstable/cluster/SqlRunnerStorage.ts +21 -5
- package/src/unstable/cluster/internal/entityManager.ts +11 -15
- package/src/unstable/encoding/Msgpack.ts +6 -8
- package/src/unstable/encoding/Sse.ts +98 -16
- package/src/unstable/eventlog/Event.ts +20 -20
- package/src/unstable/eventlog/EventGroup.ts +4 -4
- package/src/unstable/eventlog/EventJournal.ts +15 -15
- package/src/unstable/eventlog/EventLog.ts +3 -3
- package/src/unstable/eventlog/EventLogEncryption.ts +1 -1
- package/src/unstable/eventlog/EventLogMessage.ts +2 -2
- package/src/unstable/eventlog/EventLogRemote.ts +1 -1
- package/src/unstable/eventlog/EventLogServer.ts +41 -7
- package/src/unstable/eventlog/EventLogServerEncrypted.ts +13 -5
- package/src/unstable/eventlog/EventLogServerUnencrypted.ts +14 -6
- package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
- package/src/unstable/http/Cookies.ts +35 -21
- package/src/unstable/http/Etag.ts +1 -1
- package/src/unstable/http/FetchHttpClient.ts +3 -1
- package/src/unstable/http/Headers.ts +2 -2
- package/src/unstable/http/HttpBody.ts +20 -5
- package/src/unstable/http/HttpClient.ts +83 -55
- package/src/unstable/http/HttpClientRequest.ts +2 -0
- package/src/unstable/http/HttpClientResponse.ts +4 -4
- package/src/unstable/http/HttpEffect.ts +8 -8
- package/src/unstable/http/HttpMethod.ts +6 -9
- package/src/unstable/http/HttpMiddleware.ts +202 -39
- package/src/unstable/http/HttpPlatform.ts +95 -0
- package/src/unstable/http/HttpRouter.ts +102 -98
- package/src/unstable/http/HttpServer.ts +13 -13
- package/src/unstable/http/HttpServerError.ts +2 -2
- package/src/unstable/http/HttpServerRequest.ts +4 -4
- package/src/unstable/http/HttpServerResponse.ts +30 -0
- package/src/unstable/http/HttpStaticServer.ts +35 -7
- package/src/unstable/http/Multipart.ts +6 -6
- package/src/unstable/http/Url.ts +33 -63
- package/src/unstable/http/UrlParams.ts +10 -18
- package/src/unstable/http/internal/compression.ts +196 -0
- package/src/unstable/httpapi/HttpApiBuilder.ts +10 -9
- package/src/unstable/httpapi/HttpApiClient.ts +14 -14
- package/src/unstable/httpapi/HttpApiEndpoint.ts +42 -42
- package/src/unstable/httpapi/HttpApiError.ts +13 -13
- package/src/unstable/httpapi/HttpApiGroup.ts +15 -15
- package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
- package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
- package/src/unstable/httpapi/HttpApiSchema.ts +6 -6
- package/src/unstable/httpapi/OpenApi.ts +13 -13
- package/src/unstable/observability/OtlpExporter.ts +31 -19
- package/src/unstable/observability/OtlpMetrics.ts +4 -1
- package/src/unstable/observability/OtlpResource.ts +26 -17
- package/src/unstable/observability/PrometheusMetrics.ts +13 -4
- package/src/unstable/observability/internal/otlpEnv.ts +1 -1
- package/src/unstable/observability/internal/protobuf.ts +3 -0
- package/src/unstable/persistence/KeyValueStore.ts +72 -49
- package/src/unstable/persistence/Persistable.ts +8 -8
- package/src/unstable/persistence/PersistedQueue.ts +6 -6
- package/src/unstable/persistence/Persistence.ts +126 -19
- package/src/unstable/persistence/RateLimiter.ts +26 -15
- package/src/unstable/persistence/Redis.ts +2 -2
- package/src/unstable/process/ChildProcess.ts +64 -21
- package/src/unstable/process/ChildProcessSpawner.ts +21 -10
- package/src/unstable/reactivity/AsyncResult.ts +12 -13
- package/src/unstable/reactivity/Atom.ts +28 -25
- package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
- package/src/unstable/reactivity/AtomRegistry.ts +24 -3
- package/src/unstable/reactivity/AtomRpc.ts +5 -4
- package/src/unstable/reactivity/Hydration.ts +1 -1
- package/src/unstable/rpc/Rpc.ts +35 -33
- package/src/unstable/rpc/RpcClient.ts +16 -15
- package/src/unstable/rpc/RpcGroup.ts +8 -8
- package/src/unstable/rpc/RpcMessage.ts +31 -30
- package/src/unstable/rpc/RpcMiddleware.ts +10 -10
- package/src/unstable/rpc/RpcSchema.ts +4 -4
- package/src/unstable/rpc/RpcSerialization.ts +167 -68
- package/src/unstable/rpc/RpcServer.ts +18 -15
- package/src/unstable/rpc/RpcWorker.ts +5 -5
- package/src/unstable/schema/Model.ts +52 -50
- package/src/unstable/schema/VariantSchema.ts +5 -5
- package/src/unstable/socket/Socket.ts +17 -4
- package/src/unstable/sql/SqlClient.ts +5 -6
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlResolver.ts +5 -5
- package/src/unstable/sql/Statement.ts +24 -23
- package/src/unstable/workers/Transferable.ts +1 -1
- package/src/unstable/workers/Worker.ts +2 -2
- package/src/unstable/workers/WorkerError.ts +7 -7
- package/src/unstable/workers/WorkerRunner.ts +1 -1
- package/src/unstable/workflow/Activity.ts +2 -2
- package/src/unstable/workflow/DurableClock.ts +1 -1
- package/src/unstable/workflow/DurableDeferred.ts +10 -10
- package/src/unstable/workflow/DurableQueue.ts +22 -20
- package/src/unstable/workflow/Workflow.ts +23 -23
- package/src/unstable/workflow/WorkflowEngine.ts +1 -1
- package/src/unstable/workflow/WorkflowProxy.ts +4 -2
- package/dist/internal/version.d.ts +0 -3
- package/dist/internal/version.d.ts.map +0 -1
- package/dist/internal/version.js +0 -2
- package/dist/internal/version.js.map +0 -1
- package/src/internal/version.ts +0 -2
package/src/SchemaAST.ts
CHANGED
|
@@ -13,16 +13,15 @@
|
|
|
13
13
|
|
|
14
14
|
import * as Arr from "./Array.ts"
|
|
15
15
|
import * as Cause from "./Cause.ts"
|
|
16
|
-
import type * as Combiner from "./Combiner.ts"
|
|
17
16
|
import * as Effect from "./Effect.ts"
|
|
18
17
|
import * as Exit from "./Exit.ts"
|
|
19
18
|
import { format, formatPropertyKey } from "./Formatter.ts"
|
|
20
|
-
import { memoize } from "./Function.ts"
|
|
19
|
+
import { identity, memoize } from "./Function.ts"
|
|
21
20
|
import { effectIsExit, iterateEager } from "./internal/effect.ts"
|
|
22
21
|
import * as InternalRecord from "./internal/record.ts"
|
|
23
22
|
import * as InternalAnnotations from "./internal/schema/annotations.ts"
|
|
24
23
|
import * as InternalSchemaCause from "./internal/schema/cause.ts"
|
|
25
|
-
import * as
|
|
24
|
+
import * as InternalParser from "./internal/schema/parser.ts"
|
|
26
25
|
import * as Pipeable from "./Pipeable.ts"
|
|
27
26
|
import * as Predicate from "./Predicate.ts"
|
|
28
27
|
import * as Result from "./Result.ts"
|
|
@@ -672,10 +671,10 @@ export class Declaration extends Base {
|
|
|
672
671
|
}
|
|
673
672
|
/** @internal */
|
|
674
673
|
getParser(): SchemaParser.Parser {
|
|
675
|
-
|
|
676
|
-
return (
|
|
677
|
-
if (
|
|
678
|
-
return
|
|
674
|
+
let run: ReturnType<typeof this.run>
|
|
675
|
+
return (input, options) => {
|
|
676
|
+
if (input === InternalParser.missing) return InternalParser.missingExit
|
|
677
|
+
return (run ??= this.run(this.typeParameters))(input, this, options)
|
|
679
678
|
}
|
|
680
679
|
}
|
|
681
680
|
private _rebuild(recur: (ast: AST) => AST, checks: Checks | undefined, encodingChecks: Checks | undefined) {
|
|
@@ -816,7 +815,8 @@ export class Void extends Base {
|
|
|
816
815
|
readonly _tag = "Void"
|
|
817
816
|
/** @internal */
|
|
818
817
|
getParser() {
|
|
819
|
-
|
|
818
|
+
const succeed = InternalParser.succeed(undefined)
|
|
819
|
+
return (input: unknown) => input === InternalParser.missing ? InternalParser.missingExit : succeed
|
|
820
820
|
}
|
|
821
821
|
/** @internal */
|
|
822
822
|
toCodecJson(): AST {
|
|
@@ -1080,9 +1080,9 @@ function isTemplateLiteralPart(ast: AST): ast is TemplateLiteralPart {
|
|
|
1080
1080
|
return true
|
|
1081
1081
|
case "Literal":
|
|
1082
1082
|
case "TemplateLiteral":
|
|
1083
|
-
return ast.checks
|
|
1083
|
+
return !ast.checks
|
|
1084
1084
|
case "Union":
|
|
1085
|
-
return ast.checks
|
|
1085
|
+
return !ast.checks && ast.types.every(isTemplateLiteralPart)
|
|
1086
1086
|
default:
|
|
1087
1087
|
return false
|
|
1088
1088
|
}
|
|
@@ -1106,6 +1106,10 @@ export class TemplateLiteral extends Base {
|
|
|
1106
1106
|
readonly parts: ReadonlyArray<AST>
|
|
1107
1107
|
/** @internal */
|
|
1108
1108
|
readonly encodedParts: ReadonlyArray<TemplateLiteralPart>
|
|
1109
|
+
/** @internal */
|
|
1110
|
+
readonly literals: ReadonlyArray<string | undefined>
|
|
1111
|
+
/** @internal */
|
|
1112
|
+
readonly suffixLengths: ReadonlyArray<number>
|
|
1109
1113
|
|
|
1110
1114
|
constructor(
|
|
1111
1115
|
parts: ReadonlyArray<AST>,
|
|
@@ -1116,25 +1120,40 @@ export class TemplateLiteral extends Base {
|
|
|
1116
1120
|
) {
|
|
1117
1121
|
super(annotations, checks, encoding, context)
|
|
1118
1122
|
const encodedParts: Array<TemplateLiteralPart> = []
|
|
1123
|
+
const literals: Array<string | undefined> = []
|
|
1119
1124
|
for (const part of parts) {
|
|
1120
1125
|
const encoded = toEncoded(part)
|
|
1121
1126
|
if (isTemplateLiteralPart(encoded)) {
|
|
1122
1127
|
encodedParts.push(encoded)
|
|
1128
|
+
literals.push(encoded._tag === "Literal" ? globalThis.String(encoded.literal) : undefined)
|
|
1123
1129
|
} else {
|
|
1124
1130
|
throw new Error(`Invalid TemplateLiteral part ${encoded._tag}`)
|
|
1125
1131
|
}
|
|
1126
1132
|
}
|
|
1133
|
+
const suffixLengths = new Array<number>(encodedParts.length + 1)
|
|
1134
|
+
suffixLengths[encodedParts.length] = 0
|
|
1135
|
+
for (let i = encodedParts.length - 1; i >= 0; i--) {
|
|
1136
|
+
suffixLengths[i] = suffixLengths[i + 1] + (literals[i]?.length ?? 0)
|
|
1137
|
+
}
|
|
1127
1138
|
this.parts = parts
|
|
1128
1139
|
this.encodedParts = encodedParts
|
|
1140
|
+
this.literals = literals
|
|
1141
|
+
this.suffixLengths = suffixLengths
|
|
1129
1142
|
}
|
|
1130
1143
|
/** @internal */
|
|
1131
1144
|
getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
|
|
1132
1145
|
const parser = recur(this.asTemplateLiteralParser())
|
|
1133
|
-
return (
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1146
|
+
return (input, options) => {
|
|
1147
|
+
if (input === InternalParser.missing) return InternalParser.missingExit
|
|
1148
|
+
const result = parser(input, options)
|
|
1149
|
+
if ((result as Exit.Exit<unknown, unknown>)._tag === "Success") {
|
|
1150
|
+
return InternalParser.sameExit
|
|
1151
|
+
}
|
|
1152
|
+
return Effect.mapBothEager(result, {
|
|
1153
|
+
onSuccess: () => input,
|
|
1154
|
+
onFailure: (issue) => new SchemaIssue.Composite(this, [issue])
|
|
1137
1155
|
})
|
|
1156
|
+
}
|
|
1138
1157
|
}
|
|
1139
1158
|
/** @internal */
|
|
1140
1159
|
getExpected(): string {
|
|
@@ -1142,7 +1161,7 @@ export class TemplateLiteral extends Base {
|
|
|
1142
1161
|
}
|
|
1143
1162
|
/** @internal */
|
|
1144
1163
|
matchPart(s: string, options: ParseOptions): string | undefined {
|
|
1145
|
-
return segmentTemplateLiteralParts(this
|
|
1164
|
+
return segmentTemplateLiteralParts(this, s, options) === undefined ? undefined : s
|
|
1146
1165
|
}
|
|
1147
1166
|
/** @internal */
|
|
1148
1167
|
asTemplateLiteralParser(): Arrays {
|
|
@@ -1152,11 +1171,11 @@ export class TemplateLiteral extends Base {
|
|
|
1152
1171
|
tuple,
|
|
1153
1172
|
new SchemaTransformation.Transformation(
|
|
1154
1173
|
SchemaGetter.transformOrFail((s: string, options) => {
|
|
1155
|
-
const segments = segmentTemplateLiteralParts(this
|
|
1156
|
-
if (segments
|
|
1174
|
+
const segments = segmentTemplateLiteralParts(this, s, options)
|
|
1175
|
+
if (segments) return Effect.succeed(segments)
|
|
1157
1176
|
return Effect.fail(
|
|
1158
|
-
new SchemaIssue.InvalidValue(
|
|
1159
|
-
message:
|
|
1177
|
+
new SchemaIssue.InvalidValue({
|
|
1178
|
+
message: "Expected a string matching template literal parts"
|
|
1160
1179
|
})
|
|
1161
1180
|
)
|
|
1162
1181
|
}),
|
|
@@ -1228,11 +1247,11 @@ export type LiteralValue = string | number | boolean | bigint
|
|
|
1228
1247
|
*
|
|
1229
1248
|
* **Example** (Creating a literal AST)
|
|
1230
1249
|
*
|
|
1231
|
-
* ```ts
|
|
1250
|
+
* ```ts import.meta.vitest
|
|
1232
1251
|
* import { SchemaAST } from "effect"
|
|
1233
1252
|
*
|
|
1234
1253
|
* const ast = new SchemaAST.Literal("active")
|
|
1235
|
-
*
|
|
1254
|
+
* ast.literal // => "active"
|
|
1236
1255
|
* ```
|
|
1237
1256
|
*
|
|
1238
1257
|
* @see {@link LiteralValue}
|
|
@@ -1309,7 +1328,8 @@ export class String extends Base {
|
|
|
1309
1328
|
}
|
|
1310
1329
|
/** @internal */
|
|
1311
1330
|
matchPart(s: string, options: ParseOptions): string | undefined {
|
|
1312
|
-
|
|
1331
|
+
const checks = this.checks
|
|
1332
|
+
return checks && !options.disableChecks && collectIssues(checks, s, undefined, this, options) ? undefined : s
|
|
1313
1333
|
}
|
|
1314
1334
|
/** @internal */
|
|
1315
1335
|
getExpected(): string {
|
|
@@ -1366,9 +1386,10 @@ export class Number extends Base {
|
|
|
1366
1386
|
return this._match(isStringFiniteRegExp, s, options)
|
|
1367
1387
|
}
|
|
1368
1388
|
private _match(regexp: RegExp, s: string, options: ParseOptions): number | undefined {
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1389
|
+
if (!regexp.test(s)) return undefined
|
|
1390
|
+
const value = globalThis.Number(s)
|
|
1391
|
+
if (options.disableChecks || !this.checks) return value
|
|
1392
|
+
return collectIssues(this.checks, value, undefined, this, options) ? undefined : value
|
|
1372
1393
|
}
|
|
1373
1394
|
/** @internal */
|
|
1374
1395
|
toCodecJson(): AST {
|
|
@@ -1401,7 +1422,7 @@ function hasCheck(checks: ReadonlyArray<Check<unknown>>, id: string): boolean {
|
|
|
1401
1422
|
}
|
|
1402
1423
|
|
|
1403
1424
|
function numberToJson(checks: Checks | undefined): Link {
|
|
1404
|
-
const encodedFinite = checks
|
|
1425
|
+
const encodedFinite = !checks
|
|
1405
1426
|
? finite
|
|
1406
1427
|
: appendChecks(finite, checks)
|
|
1407
1428
|
|
|
@@ -1493,7 +1514,8 @@ export class Symbol extends Base {
|
|
|
1493
1514
|
}
|
|
1494
1515
|
/** @internal */
|
|
1495
1516
|
matchKey(s: symbol, options: ParseOptions): symbol | undefined {
|
|
1496
|
-
|
|
1517
|
+
if (options.disableChecks || !this.checks) return s
|
|
1518
|
+
return collectIssues(this.checks, s, undefined, this, options) ? undefined : s
|
|
1497
1519
|
}
|
|
1498
1520
|
/** @internal */
|
|
1499
1521
|
toCodecStringTree(): AST {
|
|
@@ -1546,9 +1568,10 @@ export class BigInt extends Base {
|
|
|
1546
1568
|
}
|
|
1547
1569
|
/** @internal */
|
|
1548
1570
|
matchPart(s: string, options: ParseOptions): bigint | undefined {
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1571
|
+
if (!isStringBigIntRegExp.test(s)) return undefined
|
|
1572
|
+
const value = globalThis.BigInt(s)
|
|
1573
|
+
if (options.disableChecks || !this.checks) return value
|
|
1574
|
+
return collectIssues(this.checks, value, undefined, this, options) ? undefined : value
|
|
1552
1575
|
}
|
|
1553
1576
|
/** @internal */
|
|
1554
1577
|
toCodecStringTree(): AST {
|
|
@@ -1602,15 +1625,14 @@ export const bigInt = new BigInt()
|
|
|
1602
1625
|
*
|
|
1603
1626
|
* **Example** (Inspecting a tuple AST)
|
|
1604
1627
|
*
|
|
1605
|
-
* ```ts
|
|
1628
|
+
* ```ts import.meta.vitest
|
|
1606
1629
|
* import { Schema, SchemaAST } from "effect"
|
|
1607
1630
|
*
|
|
1608
1631
|
* const schema = Schema.Tuple([Schema.String, Schema.Number])
|
|
1609
1632
|
* const ast = schema.ast
|
|
1610
1633
|
*
|
|
1611
1634
|
* if (SchemaAST.isArrays(ast)) {
|
|
1612
|
-
*
|
|
1613
|
-
* console.log(ast.rest.length) // 0
|
|
1635
|
+
* [ast.elements.length, ast.rest.length] // => [2, 0]
|
|
1614
1636
|
* }
|
|
1615
1637
|
* ```
|
|
1616
1638
|
*
|
|
@@ -1642,58 +1664,68 @@ export class Arrays extends Base {
|
|
|
1642
1664
|
this.rest = rest
|
|
1643
1665
|
this.encodingChecks = encodingChecks
|
|
1644
1666
|
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1667
|
+
let hasOptional = false
|
|
1668
|
+
for (let i = 0; i < elements.length; i++) {
|
|
1669
|
+
if (isOptional(elements[i])) {
|
|
1670
|
+
hasOptional = true
|
|
1671
|
+
} else if (hasOptional) {
|
|
1672
|
+
throw new Error("A required element cannot follow an optional element. ts(1257)")
|
|
1673
|
+
}
|
|
1674
|
+
}
|
|
1675
|
+
if (hasOptional && rest.length > 1) {
|
|
1648
1676
|
throw new Error("A required element cannot follow an optional element. ts(1257)")
|
|
1649
1677
|
}
|
|
1650
1678
|
|
|
1651
1679
|
// An optional element cannot follow a rest element.ts(1266)
|
|
1652
|
-
|
|
1653
|
-
|
|
1680
|
+
for (let i = 1; i < rest.length; i++) {
|
|
1681
|
+
if (isOptional(rest[i])) {
|
|
1682
|
+
throw new Error("An optional element cannot follow a rest element. ts(1266)")
|
|
1683
|
+
}
|
|
1654
1684
|
}
|
|
1655
1685
|
}
|
|
1656
1686
|
/** @internal */
|
|
1657
1687
|
getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
|
|
1658
1688
|
// oxlint-disable-next-line @typescript-eslint/no-this-alias
|
|
1659
1689
|
const ast = this
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
const
|
|
1665
|
-
const tailLen = tail.length
|
|
1690
|
+
type ElementParser = { readonly ast: AST; readonly parser: SchemaParser.Parser }
|
|
1691
|
+
let elements: Array<ElementParser> | undefined
|
|
1692
|
+
let rest: Array<ElementParser> | undefined
|
|
1693
|
+
const elementLen = ast.elements.length
|
|
1694
|
+
const tailLen = Math.max(0, ast.rest.length - 1)
|
|
1666
1695
|
|
|
1667
1696
|
function getParser(
|
|
1668
1697
|
tailThreshold: number,
|
|
1669
1698
|
index: number
|
|
1670
1699
|
): { readonly ast: AST; readonly parser: SchemaParser.Parser } {
|
|
1671
1700
|
if (index < elementLen) {
|
|
1672
|
-
return elements[index]
|
|
1701
|
+
return elements![index]
|
|
1673
1702
|
} else if (index >= tailThreshold) {
|
|
1674
|
-
return
|
|
1703
|
+
return rest![index - tailThreshold + 1]
|
|
1675
1704
|
}
|
|
1676
|
-
return
|
|
1705
|
+
return rest![0]
|
|
1677
1706
|
}
|
|
1678
1707
|
|
|
1679
|
-
return Effect.fnUntracedEager(function*(
|
|
1680
|
-
if (
|
|
1681
|
-
return
|
|
1708
|
+
return Effect.fnUntracedEager(function*(input, options) {
|
|
1709
|
+
if (input === InternalParser.missing) {
|
|
1710
|
+
return InternalParser.missing
|
|
1682
1711
|
}
|
|
1683
|
-
const input = oinput.value
|
|
1684
1712
|
|
|
1685
1713
|
// If the input is not an array, return early with an error
|
|
1686
1714
|
if (!Array.isArray(input)) {
|
|
1687
|
-
return yield* Effect.fail(new SchemaIssue.InvalidType(ast
|
|
1715
|
+
return yield* Effect.fail(new SchemaIssue.InvalidType(ast))
|
|
1716
|
+
}
|
|
1717
|
+
if (!elements) {
|
|
1718
|
+
elements = ast.elements.map((ast) => ({ ast, parser: recur(ast) }))
|
|
1719
|
+
rest = ast.rest.map((ast) => ({ ast, parser: recur(ast) }))
|
|
1688
1720
|
}
|
|
1689
1721
|
|
|
1690
1722
|
const len = input.length
|
|
1691
1723
|
const state = {
|
|
1692
1724
|
ast,
|
|
1693
1725
|
getParser,
|
|
1694
|
-
|
|
1726
|
+
input,
|
|
1695
1727
|
len,
|
|
1696
|
-
tailThreshold:
|
|
1728
|
+
tailThreshold: Math.max(elementLen, len - tailLen),
|
|
1697
1729
|
output: new globalThis.Array(len),
|
|
1698
1730
|
issues: undefined as Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
|
|
1699
1731
|
options
|
|
@@ -1710,19 +1742,23 @@ export class Arrays extends Base {
|
|
|
1710
1742
|
// ---------------------------------------------
|
|
1711
1743
|
if (ast.rest.length === 0 && len > elementLen) {
|
|
1712
1744
|
for (let i = elementLen; i <= len - 1; i++) {
|
|
1713
|
-
const issue = new SchemaIssue.Pointer([i], new SchemaIssue.UnexpectedKey(ast
|
|
1745
|
+
const issue = new SchemaIssue.Pointer([i], new SchemaIssue.UnexpectedKey(ast))
|
|
1714
1746
|
if (options.errors === "all") {
|
|
1715
1747
|
if (state.issues) state.issues.push(issue)
|
|
1716
1748
|
else state.issues = [issue]
|
|
1717
1749
|
} else {
|
|
1718
|
-
return yield* Effect.fail(
|
|
1750
|
+
return yield* Effect.fail(
|
|
1751
|
+
new SchemaIssue.Composite(ast, [issue])
|
|
1752
|
+
)
|
|
1719
1753
|
}
|
|
1720
1754
|
}
|
|
1721
1755
|
}
|
|
1722
1756
|
if (state.issues) {
|
|
1723
|
-
return yield* Effect.fail(
|
|
1757
|
+
return yield* Effect.fail(
|
|
1758
|
+
new SchemaIssue.Composite(ast, state.issues)
|
|
1759
|
+
)
|
|
1724
1760
|
}
|
|
1725
|
-
return
|
|
1761
|
+
return state.output
|
|
1726
1762
|
})
|
|
1727
1763
|
}
|
|
1728
1764
|
private _rebuild(recur: (ast: AST) => AST, checks: Checks | undefined, encodingChecks: Checks | undefined) {
|
|
@@ -1757,7 +1793,7 @@ export class Arrays extends Base {
|
|
|
1757
1793
|
}
|
|
1758
1794
|
const parseArray = iterateEager<{
|
|
1759
1795
|
readonly ast: AST
|
|
1760
|
-
readonly
|
|
1796
|
+
readonly input: unknown
|
|
1761
1797
|
readonly len: number
|
|
1762
1798
|
readonly getParser: (
|
|
1763
1799
|
tailThreshold: number,
|
|
@@ -1769,14 +1805,18 @@ const parseArray = iterateEager<{
|
|
|
1769
1805
|
issues: Array<SchemaIssue.Issue> | undefined
|
|
1770
1806
|
}, unknown>()({
|
|
1771
1807
|
onItem(s, item, i) {
|
|
1772
|
-
const value = i < s.len ?
|
|
1808
|
+
const value = i < s.len ? item : InternalParser.missing
|
|
1773
1809
|
return s.getParser(s.tailThreshold, i).parser(value, s.options)
|
|
1774
1810
|
},
|
|
1775
|
-
step(s,
|
|
1811
|
+
step(s, item, exit, i) {
|
|
1776
1812
|
if (exit._tag === "Failure") {
|
|
1777
1813
|
return wrapPropertyKeyIssue(s, s.ast, i, exit)
|
|
1778
|
-
}
|
|
1779
|
-
|
|
1814
|
+
}
|
|
1815
|
+
const value = exit === InternalParser.sameExit
|
|
1816
|
+
? item
|
|
1817
|
+
: (exit as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
|
|
1818
|
+
if (value !== InternalParser.missing) {
|
|
1819
|
+
s.output[i] = value
|
|
1780
1820
|
} else {
|
|
1781
1821
|
const p = s.getParser(s.tailThreshold, i)
|
|
1782
1822
|
if (isOptional(p.ast)) return
|
|
@@ -1785,20 +1825,14 @@ const parseArray = iterateEager<{
|
|
|
1785
1825
|
if (s.issues) s.issues.push(issue)
|
|
1786
1826
|
else s.issues = [issue]
|
|
1787
1827
|
} else {
|
|
1788
|
-
return Exit.fail(
|
|
1828
|
+
return Exit.fail(
|
|
1829
|
+
new SchemaIssue.Composite(s.ast, [issue])
|
|
1830
|
+
)
|
|
1789
1831
|
}
|
|
1790
1832
|
}
|
|
1791
1833
|
}
|
|
1792
1834
|
})
|
|
1793
1835
|
|
|
1794
|
-
function resolveTailThreshold(
|
|
1795
|
-
inputLen: number,
|
|
1796
|
-
elementLen: number,
|
|
1797
|
-
tailLen: number
|
|
1798
|
-
) {
|
|
1799
|
-
return Math.max(elementLen, inputLen - tailLen)
|
|
1800
|
-
}
|
|
1801
|
-
|
|
1802
1836
|
const resolveConcurrency = (value: number | "unbounded" | undefined) => {
|
|
1803
1837
|
value = value === "unbounded" ? Infinity : value ?? 1
|
|
1804
1838
|
return value > 1 ? { concurrency: value } : undefined
|
|
@@ -1806,7 +1840,7 @@ const resolveConcurrency = (value: number | "unbounded" | undefined) => {
|
|
|
1806
1840
|
|
|
1807
1841
|
const wrapPropertyKeyIssue = (
|
|
1808
1842
|
s: {
|
|
1809
|
-
readonly
|
|
1843
|
+
readonly input: unknown
|
|
1810
1844
|
readonly options: ParseOptions
|
|
1811
1845
|
issues: Array<SchemaIssue.Issue> | undefined
|
|
1812
1846
|
},
|
|
@@ -1822,7 +1856,11 @@ const wrapPropertyKeyIssue = (
|
|
|
1822
1856
|
return Exit.failCause(
|
|
1823
1857
|
Cause.map(
|
|
1824
1858
|
exit.cause,
|
|
1825
|
-
(issue) =>
|
|
1859
|
+
(issue) =>
|
|
1860
|
+
new SchemaIssue.Composite(
|
|
1861
|
+
ast,
|
|
1862
|
+
[new SchemaIssue.Pointer([key], issue)]
|
|
1863
|
+
)
|
|
1826
1864
|
)
|
|
1827
1865
|
)
|
|
1828
1866
|
}
|
|
@@ -1831,7 +1869,9 @@ const wrapPropertyKeyIssue = (
|
|
|
1831
1869
|
if (s.issues) s.issues.push(pointer)
|
|
1832
1870
|
else s.issues = [pointer]
|
|
1833
1871
|
} else {
|
|
1834
|
-
return Exit.fail(
|
|
1872
|
+
return Exit.fail(
|
|
1873
|
+
new SchemaIssue.Composite(ast, [pointer])
|
|
1874
|
+
)
|
|
1835
1875
|
}
|
|
1836
1876
|
}
|
|
1837
1877
|
|
|
@@ -1899,37 +1939,6 @@ export class PropertySignature {
|
|
|
1899
1939
|
}
|
|
1900
1940
|
}
|
|
1901
1941
|
|
|
1902
|
-
/**
|
|
1903
|
-
* Represents a bidirectional merge strategy for index signature key-value pairs.
|
|
1904
|
-
*
|
|
1905
|
-
* **Details**
|
|
1906
|
-
*
|
|
1907
|
-
* Used by {@link IndexSignature} when the same key appears multiple times
|
|
1908
|
-
* (e.g. from `Schema.extend` or overlapping records). Provides separate
|
|
1909
|
-
* `decode` and `encode` combiners that determine how duplicate entries are
|
|
1910
|
-
* merged.
|
|
1911
|
-
*
|
|
1912
|
-
* @see {@link IndexSignature}
|
|
1913
|
-
* @category models
|
|
1914
|
-
* @since 4.0.0
|
|
1915
|
-
*/
|
|
1916
|
-
export class KeyValueCombiner {
|
|
1917
|
-
readonly decode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined
|
|
1918
|
-
readonly encode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined
|
|
1919
|
-
|
|
1920
|
-
constructor(
|
|
1921
|
-
decode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined,
|
|
1922
|
-
encode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined
|
|
1923
|
-
) {
|
|
1924
|
-
this.decode = decode
|
|
1925
|
-
this.encode = encode
|
|
1926
|
-
}
|
|
1927
|
-
/** @internal */
|
|
1928
|
-
flip(): KeyValueCombiner {
|
|
1929
|
-
return new KeyValueCombiner(this.encode, this.decode)
|
|
1930
|
-
}
|
|
1931
|
-
}
|
|
1932
|
-
|
|
1933
1942
|
type IndexSignatureParameter =
|
|
1934
1943
|
| String
|
|
1935
1944
|
| Number
|
|
@@ -1968,7 +1977,6 @@ function isIndexSignatureParameter(ast: AST): ast is IndexSignatureParameter {
|
|
|
1968
1977
|
* - `parameter` — the key type AST (e.g. {@link String} for `string` keys,
|
|
1969
1978
|
* {@link TemplateLiteral} for patterned keys).
|
|
1970
1979
|
* - `type` — the value type SchemaAST.
|
|
1971
|
-
* - `merge` — optional {@link KeyValueCombiner} for handling duplicate keys.
|
|
1972
1980
|
*
|
|
1973
1981
|
* **Gotchas**
|
|
1974
1982
|
*
|
|
@@ -1983,19 +1991,16 @@ function isIndexSignatureParameter(ast: AST): ast is IndexSignatureParameter {
|
|
|
1983
1991
|
export class IndexSignature {
|
|
1984
1992
|
readonly parameter: IndexSignatureParameter
|
|
1985
1993
|
readonly type: AST
|
|
1986
|
-
readonly merge: KeyValueCombiner | undefined
|
|
1987
1994
|
|
|
1988
1995
|
constructor(
|
|
1989
1996
|
parameter: AST,
|
|
1990
|
-
type: AST
|
|
1991
|
-
merge: KeyValueCombiner | undefined
|
|
1997
|
+
type: AST
|
|
1992
1998
|
) {
|
|
1993
1999
|
if (!isIndexSignatureParameter(parameter)) {
|
|
1994
2000
|
throw new Error(`Invalid index signature parameter ${parameter._tag}`)
|
|
1995
2001
|
}
|
|
1996
2002
|
this.parameter = parameter
|
|
1997
2003
|
this.type = type
|
|
1998
|
-
this.merge = merge
|
|
1999
2004
|
if (isOptional(type) && !containsUndefined(type)) {
|
|
2000
2005
|
throw new Error("Cannot use `Schema.optionalKey` with index signatures, use `Schema.optional` instead.")
|
|
2001
2006
|
}
|
|
@@ -2026,17 +2031,14 @@ export class IndexSignature {
|
|
|
2026
2031
|
*
|
|
2027
2032
|
* **Example** (Inspecting a struct AST)
|
|
2028
2033
|
*
|
|
2029
|
-
* ```ts
|
|
2034
|
+
* ```ts import.meta.vitest
|
|
2030
2035
|
* import { Schema, SchemaAST } from "effect"
|
|
2031
2036
|
*
|
|
2032
2037
|
* const schema = Schema.Struct({ name: Schema.String })
|
|
2033
2038
|
* const ast = schema.ast
|
|
2034
2039
|
*
|
|
2035
2040
|
* if (SchemaAST.isObjects(ast)) {
|
|
2036
|
-
*
|
|
2037
|
-
* console.log(ps.name, ps.type._tag)
|
|
2038
|
-
* }
|
|
2039
|
-
* // "name" "String"
|
|
2041
|
+
* ast.propertySignatures.map((ps) => [ps.name, ps.type._tag]) // => [["name", "String"]]
|
|
2040
2042
|
* }
|
|
2041
2043
|
* ```
|
|
2042
2044
|
*
|
|
@@ -2078,97 +2080,119 @@ export class Objects extends Base {
|
|
|
2078
2080
|
// oxlint-disable-next-line @typescript-eslint/no-this-alias
|
|
2079
2081
|
const ast = this
|
|
2080
2082
|
const expectedKeys: Array<PropertyKey> = []
|
|
2081
|
-
const expectedKeysSet = new Set<PropertyKey>()
|
|
2082
|
-
const properties: Array<{
|
|
2083
|
-
readonly ps: PropertySignature | IndexSignature
|
|
2084
|
-
readonly parser: SchemaParser.Parser
|
|
2085
|
-
readonly name: PropertyKey
|
|
2086
|
-
readonly type: AST
|
|
2087
|
-
}> = []
|
|
2088
2083
|
for (const ps of ast.propertySignatures) {
|
|
2089
2084
|
expectedKeys.push(ps.name)
|
|
2090
|
-
expectedKeysSet.add(ps.name)
|
|
2091
|
-
properties.push({
|
|
2092
|
-
ps,
|
|
2093
|
-
parser: recur(ps.type),
|
|
2094
|
-
name: ps.name,
|
|
2095
|
-
type: ps.type
|
|
2096
|
-
})
|
|
2097
2085
|
}
|
|
2086
|
+
const hasProperties = expectedKeys.length
|
|
2098
2087
|
const indexCount = ast.indexSignatures.length
|
|
2088
|
+
let expectedKeysSet = hasProperties && indexCount ? new Set(expectedKeys) : undefined
|
|
2099
2089
|
// ---------------------------------------------
|
|
2100
2090
|
// handle empty struct
|
|
2101
2091
|
// ---------------------------------------------
|
|
2102
|
-
if (
|
|
2092
|
+
if (!hasProperties && !indexCount) {
|
|
2103
2093
|
return fromRefinement(ast, Predicate.isNotNullish)
|
|
2104
2094
|
}
|
|
2105
2095
|
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
readonly
|
|
2110
|
-
readonly
|
|
2111
|
-
readonly
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2096
|
+
let properties: Array<ParsedProperty> | undefined
|
|
2097
|
+
let indexes:
|
|
2098
|
+
| Array<{
|
|
2099
|
+
readonly is: IndexSignature
|
|
2100
|
+
readonly parserKey: SchemaParser.Parser
|
|
2101
|
+
readonly parserValue: SchemaParser.Parser
|
|
2102
|
+
}>
|
|
2103
|
+
| undefined
|
|
2104
|
+
type Index = NonNullable<typeof indexes>[number]
|
|
2105
|
+
const finishIndex = (
|
|
2106
|
+
s: ObjectParserState,
|
|
2107
|
+
key: PropertyKey,
|
|
2108
|
+
k2: PropertyKey | typeof InternalParser.missing,
|
|
2109
|
+
inputValue: unknown,
|
|
2110
|
+
exitValue: Exit.Exit<unknown, SchemaIssue.Issue>
|
|
2111
|
+
): Effect.Effect<void, SchemaIssue.Issue, any> => {
|
|
2112
|
+
if (exitValue._tag === "Failure") {
|
|
2113
|
+
return wrapPropertyKeyIssue(s, ast, key, exitValue) ?? Exit.void
|
|
2114
|
+
}
|
|
2115
|
+
const value = exitValue === InternalParser.sameExit
|
|
2116
|
+
? inputValue
|
|
2117
|
+
: (exitValue as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
|
|
2118
|
+
if (k2 !== InternalParser.missing && value !== InternalParser.missing) {
|
|
2119
|
+
if (hasProperties && (expectedKeysSet!.has(key) || expectedKeysSet!.has(k2))) return Exit.void
|
|
2120
|
+
InternalRecord.assignProperty(s.out, k2, value)
|
|
2121
|
+
}
|
|
2122
|
+
return Exit.void
|
|
2123
|
+
}
|
|
2124
|
+
const parseIndex = (
|
|
2125
|
+
s: ObjectParserState,
|
|
2126
|
+
key: PropertyKey,
|
|
2127
|
+
index: Index,
|
|
2128
|
+
exitKey?: Exit.Exit<unknown, SchemaIssue.Issue>
|
|
2129
|
+
): Effect.Effect<void, SchemaIssue.Issue, any> => {
|
|
2130
|
+
if (!exitKey) {
|
|
2131
|
+
const eff = index.parserKey(key, s.options)
|
|
2132
|
+
if (!effectIsExit(eff)) {
|
|
2133
|
+
return Effect.flatMap(Effect.exit(eff), (exit) => parseIndex(s, key, index, exit))
|
|
2134
|
+
}
|
|
2135
|
+
exitKey = eff
|
|
2136
|
+
}
|
|
2137
|
+
if (exitKey._tag === "Failure") {
|
|
2138
|
+
return wrapPropertyKeyIssue(s, ast, key, exitKey) ?? Exit.void
|
|
2139
|
+
}
|
|
2140
|
+
const k2 = exitKey === InternalParser.sameExit
|
|
2141
|
+
? key
|
|
2142
|
+
: (exitKey as InternalParser.Success<PropertyKey, SchemaIssue.Issue>)[InternalParser.args]
|
|
2143
|
+
const inputValue = s.input[key]
|
|
2144
|
+
const result = index.parserValue(inputValue, s.options)
|
|
2145
|
+
return effectIsExit(result)
|
|
2146
|
+
? finishIndex(s, key, k2, inputValue, result)
|
|
2147
|
+
: Effect.flatMap(Effect.exit(result), (exit) => finishIndex(s, key, k2, inputValue, exit))
|
|
2148
|
+
}
|
|
2149
|
+
const parseStringIndex = (
|
|
2150
|
+
s: ObjectParserState,
|
|
2151
|
+
key: PropertyKey,
|
|
2152
|
+
index: Index
|
|
2153
|
+
): Effect.Effect<void, SchemaIssue.Issue, any> => {
|
|
2154
|
+
const inputValue = s.input[key]
|
|
2155
|
+
const result = index.parserValue(inputValue, s.options)
|
|
2156
|
+
return effectIsExit(result)
|
|
2157
|
+
? finishIndex(s, key, key, inputValue, result)
|
|
2158
|
+
: Effect.flatMap(Effect.exit(result), (exit) => finishIndex(s, key, key, inputValue, exit))
|
|
2159
|
+
}
|
|
2160
|
+
const parseIndexes = indexCount ?
|
|
2161
|
+
iterateEager<ObjectParserState, [key: PropertyKey, index: Index]>()({
|
|
2162
|
+
onItem: (s, [key, index]) => parseIndex(s, key, index),
|
|
2152
2163
|
step: (_s, _, exit: Exit.Exit<void, SchemaIssue.Issue>) => exit._tag === "Failure" ? exit : undefined
|
|
2153
2164
|
}) :
|
|
2154
2165
|
undefined
|
|
2155
2166
|
|
|
2156
|
-
return Effect.fnUntracedEager(function*(
|
|
2157
|
-
if (
|
|
2158
|
-
return
|
|
2167
|
+
return Effect.fnUntracedEager(function*(input, options) {
|
|
2168
|
+
if (input === InternalParser.missing) {
|
|
2169
|
+
return InternalParser.missing
|
|
2159
2170
|
}
|
|
2160
|
-
const input = oinput.value as Record<PropertyKey, unknown>
|
|
2161
2171
|
|
|
2162
2172
|
// If the input is not a record, return early with an error
|
|
2163
2173
|
if (!(typeof input === "object" && input !== null && !Array.isArray(input))) {
|
|
2164
|
-
return yield* Effect.fail(new SchemaIssue.InvalidType(ast
|
|
2174
|
+
return yield* Effect.fail(new SchemaIssue.InvalidType(ast))
|
|
2175
|
+
}
|
|
2176
|
+
if (!properties) {
|
|
2177
|
+
properties = ast.propertySignatures.map((ps) => ({
|
|
2178
|
+
parser: recur(ps.type),
|
|
2179
|
+
name: ps.name,
|
|
2180
|
+
type: ps.type
|
|
2181
|
+
}))
|
|
2182
|
+
indexes = indexCount
|
|
2183
|
+
? ast.indexSignatures.map((is) => ({
|
|
2184
|
+
is,
|
|
2185
|
+
parserKey: recur(parameterFromPropertyKey(is.parameter)),
|
|
2186
|
+
parserValue: recur(is.type)
|
|
2187
|
+
}))
|
|
2188
|
+
: undefined
|
|
2165
2189
|
}
|
|
2166
2190
|
|
|
2191
|
+
const record = input as Record<PropertyKey, unknown>
|
|
2167
2192
|
const out: Record<PropertyKey, unknown> = {}
|
|
2168
2193
|
const state = {
|
|
2169
2194
|
ast,
|
|
2170
|
-
|
|
2171
|
-
input,
|
|
2195
|
+
input: record,
|
|
2172
2196
|
out,
|
|
2173
2197
|
issues: undefined as Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
|
|
2174
2198
|
options
|
|
@@ -2181,14 +2205,15 @@ export class Objects extends Base {
|
|
|
2181
2205
|
// handle excess properties
|
|
2182
2206
|
// ---------------------------------------------
|
|
2183
2207
|
let inputKeys: Array<PropertyKey> | undefined
|
|
2184
|
-
if (
|
|
2185
|
-
|
|
2208
|
+
if (!indexCount && (onExcessPropertyError || onExcessPropertyPreserve)) {
|
|
2209
|
+
expectedKeysSet ??= new Set(expectedKeys)
|
|
2210
|
+
inputKeys = Reflect.ownKeys(record)
|
|
2186
2211
|
for (let i = 0; i < inputKeys.length; i++) {
|
|
2187
2212
|
const key = inputKeys[i]
|
|
2188
2213
|
if (!expectedKeysSet.has(key)) {
|
|
2189
2214
|
// key is unexpected
|
|
2190
2215
|
if (onExcessPropertyError) {
|
|
2191
|
-
const issue = new SchemaIssue.Pointer([key], new SchemaIssue.UnexpectedKey(ast
|
|
2216
|
+
const issue = new SchemaIssue.Pointer([key], new SchemaIssue.UnexpectedKey(ast))
|
|
2192
2217
|
if (errorsAllOption) {
|
|
2193
2218
|
if (state.issues) {
|
|
2194
2219
|
state.issues.push(issue)
|
|
@@ -2197,11 +2222,13 @@ export class Objects extends Base {
|
|
|
2197
2222
|
}
|
|
2198
2223
|
continue
|
|
2199
2224
|
} else {
|
|
2200
|
-
return yield* Effect.fail(
|
|
2225
|
+
return yield* Effect.fail(
|
|
2226
|
+
new SchemaIssue.Composite(ast, [issue])
|
|
2227
|
+
)
|
|
2201
2228
|
}
|
|
2202
2229
|
} else {
|
|
2203
2230
|
// preserve key
|
|
2204
|
-
InternalRecord.assignProperty(out, key,
|
|
2231
|
+
InternalRecord.assignProperty(out, key, record[key])
|
|
2205
2232
|
}
|
|
2206
2233
|
}
|
|
2207
2234
|
}
|
|
@@ -2212,20 +2239,34 @@ export class Objects extends Base {
|
|
|
2212
2239
|
// ---------------------------------------------
|
|
2213
2240
|
// handle property signatures
|
|
2214
2241
|
// ---------------------------------------------
|
|
2215
|
-
|
|
2216
|
-
|
|
2242
|
+
if (hasProperties) {
|
|
2243
|
+
const eff = parseProperties(state, properties!, concurrency)
|
|
2244
|
+
if (eff) yield* eff
|
|
2245
|
+
}
|
|
2217
2246
|
|
|
2218
2247
|
// ---------------------------------------------
|
|
2219
2248
|
// handle index signatures
|
|
2220
2249
|
// ---------------------------------------------
|
|
2221
|
-
if (
|
|
2222
|
-
const keyPairs = Arr.empty<[PropertyKey, IndexSignature]>()
|
|
2250
|
+
if (indexCount && !concurrency) {
|
|
2223
2251
|
for (let i = 0; i < indexCount; i++) {
|
|
2224
|
-
const
|
|
2225
|
-
const
|
|
2252
|
+
const index = indexes![i]
|
|
2253
|
+
const parse = index.is.parameter === string ? parseStringIndex : parseIndex
|
|
2254
|
+
const keys = index.is.parameter === string
|
|
2255
|
+
? Object.keys(record)
|
|
2256
|
+
: getIndexSignatureKeys(record, index.is.parameter, options)
|
|
2226
2257
|
for (let j = 0; j < keys.length; j++) {
|
|
2227
|
-
const
|
|
2228
|
-
|
|
2258
|
+
const eff = parse(state, keys[j], index)
|
|
2259
|
+
if (!effectIsExit(eff)) yield* eff
|
|
2260
|
+
else if (eff._tag === "Failure") return yield* eff as Exit.Exit<never, SchemaIssue.Issue>
|
|
2261
|
+
}
|
|
2262
|
+
}
|
|
2263
|
+
} else if (parseIndexes) {
|
|
2264
|
+
const keyPairs = Arr.empty<[PropertyKey, Index]>()
|
|
2265
|
+
for (let i = 0; i < indexCount; i++) {
|
|
2266
|
+
const index = indexes![i]
|
|
2267
|
+
const keys = getIndexSignatureKeys(record, index.is.parameter, options)
|
|
2268
|
+
for (let j = 0; j < keys.length; j++) {
|
|
2269
|
+
keyPairs.push([keys[j], index])
|
|
2229
2270
|
}
|
|
2230
2271
|
}
|
|
2231
2272
|
const eff = parseIndexes(state, keyPairs, concurrency)
|
|
@@ -2233,26 +2274,27 @@ export class Objects extends Base {
|
|
|
2233
2274
|
}
|
|
2234
2275
|
|
|
2235
2276
|
if (state.issues) {
|
|
2236
|
-
return yield* Effect.fail(
|
|
2277
|
+
return yield* Effect.fail(
|
|
2278
|
+
new SchemaIssue.Composite(ast, state.issues)
|
|
2279
|
+
)
|
|
2237
2280
|
}
|
|
2238
2281
|
if (options.propertyOrder === "original") {
|
|
2239
2282
|
// preserve input keys order
|
|
2240
|
-
const keys = (inputKeys ?? Reflect.ownKeys(
|
|
2283
|
+
const keys = (inputKeys ?? Reflect.ownKeys(record)).concat(expectedKeys)
|
|
2241
2284
|
const preserved: Record<PropertyKey, unknown> = {}
|
|
2242
2285
|
for (const key of keys) {
|
|
2243
2286
|
if (Object.hasOwn(out, key)) {
|
|
2244
2287
|
InternalRecord.assignProperty(preserved, key, out[key])
|
|
2245
2288
|
}
|
|
2246
2289
|
}
|
|
2247
|
-
return
|
|
2290
|
+
return preserved
|
|
2248
2291
|
}
|
|
2249
|
-
return
|
|
2292
|
+
return out
|
|
2250
2293
|
})
|
|
2251
2294
|
}
|
|
2252
2295
|
private _rebuild(
|
|
2253
2296
|
recur: (ast: AST) => AST,
|
|
2254
2297
|
recurParameter: (ast: AST) => AST,
|
|
2255
|
-
flipMerge: boolean,
|
|
2256
2298
|
checks: Checks | undefined,
|
|
2257
2299
|
encodingChecks: Checks | undefined
|
|
2258
2300
|
): Objects {
|
|
@@ -2264,10 +2306,9 @@ export class Objects extends Base {
|
|
|
2264
2306
|
const indexes = mapOrSame(this.indexSignatures, (is) => {
|
|
2265
2307
|
const p = recurParameter(is.parameter)
|
|
2266
2308
|
const t = recur(is.type)
|
|
2267
|
-
|
|
2268
|
-
return p === is.parameter && t === is.type && merge === is.merge
|
|
2309
|
+
return p === is.parameter && t === is.type
|
|
2269
2310
|
? is
|
|
2270
|
-
: new IndexSignature(p, t
|
|
2311
|
+
: new IndexSignature(p, t)
|
|
2271
2312
|
})
|
|
2272
2313
|
|
|
2273
2314
|
return props === this.propertySignatures && indexes === this.indexSignatures && checks === this.checks &&
|
|
@@ -2285,11 +2326,11 @@ export class Objects extends Base {
|
|
|
2285
2326
|
}
|
|
2286
2327
|
/** @internal */
|
|
2287
2328
|
flip(recur: (ast: AST) => AST): AST {
|
|
2288
|
-
return this._rebuild(recur, recur,
|
|
2329
|
+
return this._rebuild(recur, recur, this.encodingChecks, this.checks)
|
|
2289
2330
|
}
|
|
2290
2331
|
/** @internal */
|
|
2291
2332
|
recur(recur: (ast: AST) => AST, recurParameter: (ast: AST) => AST = recur): AST {
|
|
2292
|
-
return this._rebuild(recur, recurParameter,
|
|
2333
|
+
return this._rebuild(recur, recurParameter, this.checks, this.encodingChecks)
|
|
2293
2334
|
}
|
|
2294
2335
|
/** @internal */
|
|
2295
2336
|
getExpected(): string {
|
|
@@ -2298,42 +2339,41 @@ export class Objects extends Base {
|
|
|
2298
2339
|
}
|
|
2299
2340
|
}
|
|
2300
2341
|
|
|
2342
|
+
type ObjectParserState = {
|
|
2343
|
+
readonly ast: Objects
|
|
2344
|
+
readonly input: Record<PropertyKey, unknown>
|
|
2345
|
+
readonly options: ParseOptions
|
|
2346
|
+
readonly out: Record<PropertyKey, unknown>
|
|
2347
|
+
issues: Array<SchemaIssue.Issue> | undefined
|
|
2348
|
+
}
|
|
2349
|
+
|
|
2301
2350
|
type ParsedProperty = {
|
|
2302
|
-
readonly ps: PropertySignature | IndexSignature
|
|
2303
2351
|
readonly parser: SchemaParser.Parser
|
|
2304
2352
|
readonly name: PropertyKey
|
|
2305
2353
|
readonly type: AST
|
|
2306
2354
|
}
|
|
2307
2355
|
|
|
2308
|
-
const parseProperties = iterateEager<{
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
}, ParsedProperty>()({
|
|
2316
|
-
onItem(
|
|
2317
|
-
s: {
|
|
2318
|
-
readonly oinput: Option.Option<unknown>
|
|
2319
|
-
readonly input: Record<PropertyKey, unknown>
|
|
2320
|
-
readonly options: ParseOptions
|
|
2321
|
-
readonly out: Record<PropertyKey, unknown>
|
|
2322
|
-
issues: Array<SchemaIssue.Issue> | undefined
|
|
2323
|
-
},
|
|
2324
|
-
p
|
|
2325
|
-
) {
|
|
2326
|
-
const value: Option.Option<unknown> = Object.hasOwn(s.input, p.name)
|
|
2327
|
-
? Option.some(s.input[p.name])
|
|
2328
|
-
: Option.none()
|
|
2356
|
+
const parseProperties = iterateEager<ObjectParserState, ParsedProperty>()({
|
|
2357
|
+
onItem(s, p) {
|
|
2358
|
+
if (!Object.hasOwn(s.input, p.name)) {
|
|
2359
|
+
return p.parser(InternalParser.missing, s.options)
|
|
2360
|
+
}
|
|
2361
|
+
const value = s.input[p.name]
|
|
2362
|
+
InternalRecord.assignProperty(s.out, p.name, value)
|
|
2329
2363
|
return p.parser(value, s.options)
|
|
2330
2364
|
},
|
|
2331
2365
|
step(s, p, exit) {
|
|
2332
2366
|
if (exit._tag === "Failure") {
|
|
2333
2367
|
return wrapPropertyKeyIssue(s, s.ast, p.name, exit)
|
|
2334
|
-
}
|
|
2335
|
-
|
|
2336
|
-
|
|
2368
|
+
}
|
|
2369
|
+
if (exit === InternalParser.sameExit) return
|
|
2370
|
+
const value = (exit as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
|
|
2371
|
+
if (value !== InternalParser.missing) {
|
|
2372
|
+
InternalRecord.assignProperty(s.out, p.name, value)
|
|
2373
|
+
return
|
|
2374
|
+
}
|
|
2375
|
+
delete s.out[p.name]
|
|
2376
|
+
if (!isOptional(p.type)) {
|
|
2337
2377
|
const issue = new SchemaIssue.Pointer([p.name], new SchemaIssue.MissingKey(p.type.context?.annotations))
|
|
2338
2378
|
if (s.options.errors === "all") {
|
|
2339
2379
|
if (s.issues) s.issues.push(issue)
|
|
@@ -2341,7 +2381,7 @@ const parseProperties = iterateEager<{
|
|
|
2341
2381
|
return
|
|
2342
2382
|
} else {
|
|
2343
2383
|
return Exit.fail(
|
|
2344
|
-
new SchemaIssue.Composite(s.ast,
|
|
2384
|
+
new SchemaIssue.Composite(s.ast, [issue])
|
|
2345
2385
|
)
|
|
2346
2386
|
}
|
|
2347
2387
|
}
|
|
@@ -2434,6 +2474,21 @@ export type Sentinel = {
|
|
|
2434
2474
|
readonly literal: LiteralValue | symbol
|
|
2435
2475
|
}
|
|
2436
2476
|
|
|
2477
|
+
const toCandidate = memoize((ast: AST): AST => {
|
|
2478
|
+
while (true) {
|
|
2479
|
+
if (isSuspend(ast)) return unknown
|
|
2480
|
+
const encoding = ast.encoding
|
|
2481
|
+
if (!encoding) {
|
|
2482
|
+
// Index signature parameters do not participate in union selection.
|
|
2483
|
+
return (ast as any).recur?.(toCandidate, identity) ?? ast
|
|
2484
|
+
}
|
|
2485
|
+
if (
|
|
2486
|
+
encoding.some((link) => link.transformation._tag === "Middleware" && link.transformation.decode !== identity)
|
|
2487
|
+
) return unknown
|
|
2488
|
+
ast = encoding[encoding.length - 1].to
|
|
2489
|
+
}
|
|
2490
|
+
})
|
|
2491
|
+
|
|
2437
2492
|
function getCandidateTypes(ast: AST): ReadonlyArray<Type> {
|
|
2438
2493
|
switch (ast._tag) {
|
|
2439
2494
|
case "Null":
|
|
@@ -2505,63 +2560,96 @@ export function collectSentinels(ast: AST): Array<Sentinel> {
|
|
|
2505
2560
|
return []
|
|
2506
2561
|
})
|
|
2507
2562
|
case "Arrays":
|
|
2508
|
-
return ast.elements.flatMap((e, i) => {
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2563
|
+
return ast.elements.flatMap((e, i): Array<Sentinel> => {
|
|
2564
|
+
if (!isOptional(e)) {
|
|
2565
|
+
if (isLiteral(e)) {
|
|
2566
|
+
return [{ key: i, literal: e.literal }]
|
|
2567
|
+
}
|
|
2568
|
+
if (isUniqueSymbol(e)) {
|
|
2569
|
+
return [{ key: i, literal: e.symbol }]
|
|
2570
|
+
}
|
|
2571
|
+
}
|
|
2572
|
+
return []
|
|
2512
2573
|
})
|
|
2513
2574
|
case "Suspend":
|
|
2514
2575
|
return collectSentinels(ast.thunk())
|
|
2515
2576
|
}
|
|
2516
2577
|
}
|
|
2517
2578
|
|
|
2518
|
-
type CandidateIndex =
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
}
|
|
2579
|
+
type CandidateIndex =
|
|
2580
|
+
| ((input: any) => ReadonlyArray<AST>)
|
|
2581
|
+
| {
|
|
2582
|
+
bySentinel?: Map<PropertyKey, Map<LiteralValue | symbol, Array<number>>>
|
|
2583
|
+
otherwise?: { [K in Type]?: Array<number> }
|
|
2584
|
+
}
|
|
2523
2585
|
|
|
2524
2586
|
const candidateIndexCache = new WeakMap<ReadonlyArray<AST>, CandidateIndex>()
|
|
2587
|
+
const emptyCandidates: ReadonlyArray<never> = Object.freeze([])
|
|
2525
2588
|
|
|
2526
2589
|
function getIndex(types: ReadonlyArray<AST>): CandidateIndex {
|
|
2527
2590
|
let idx = candidateIndexCache.get(types)
|
|
2528
2591
|
if (idx) return idx
|
|
2529
2592
|
|
|
2530
2593
|
idx = {}
|
|
2594
|
+
let literalCandidates: Map<LiteralValue | symbol, Array<AST>> | null | undefined
|
|
2531
2595
|
for (let i = 0; i < types.length; i++) {
|
|
2532
2596
|
const a = types[i]
|
|
2533
|
-
const encoded =
|
|
2597
|
+
const encoded = toCandidate(a)
|
|
2534
2598
|
if (isNever(encoded)) continue
|
|
2535
2599
|
|
|
2536
|
-
|
|
2537
|
-
|
|
2600
|
+
if (literalCandidates !== null) {
|
|
2601
|
+
if (isLiteral(encoded) || isUniqueSymbol(encoded)) {
|
|
2602
|
+
literalCandidates ??= new Map()
|
|
2603
|
+
const literal = isLiteral(encoded) ? encoded.literal : encoded.symbol
|
|
2604
|
+
let arr = literalCandidates.get(literal)
|
|
2605
|
+
if (!arr) literalCandidates.set(literal, arr = [])
|
|
2606
|
+
arr.push(a)
|
|
2607
|
+
} else {
|
|
2608
|
+
literalCandidates = null
|
|
2609
|
+
}
|
|
2610
|
+
}
|
|
2538
2611
|
|
|
2539
|
-
|
|
2540
|
-
idx.byType ??= {}
|
|
2541
|
-
for (const t of candidateTypes) (idx.byType[t] ??= []).push(i)
|
|
2612
|
+
const sentinels = collectSentinels(encoded)
|
|
2542
2613
|
|
|
2543
|
-
if (sentinels.length
|
|
2614
|
+
if (sentinels.length) { // discriminated variants
|
|
2544
2615
|
idx.bySentinel ??= new Map()
|
|
2545
2616
|
for (const { key, literal } of sentinels) {
|
|
2546
2617
|
let m = idx.bySentinel.get(key)
|
|
2547
2618
|
if (!m) idx.bySentinel.set(key, m = new Map())
|
|
2548
2619
|
let arr = m.get(literal)
|
|
2549
2620
|
if (!arr) m.set(literal, arr = [])
|
|
2550
|
-
arr.push(i)
|
|
2621
|
+
if (arr[arr.length - 1] !== i) arr.push(i)
|
|
2551
2622
|
}
|
|
2552
2623
|
} else { // non-discriminated
|
|
2553
2624
|
idx.otherwise ??= {}
|
|
2625
|
+
const candidateTypes = getCandidateTypes(encoded)
|
|
2554
2626
|
for (const t of candidateTypes) (idx.otherwise[t] ??= []).push(i)
|
|
2555
2627
|
}
|
|
2556
2628
|
}
|
|
2557
2629
|
|
|
2630
|
+
if (literalCandidates) {
|
|
2631
|
+
literalCandidates.forEach(Object.freeze)
|
|
2632
|
+
idx = (input) => literalCandidates.get(input) ?? emptyCandidates
|
|
2633
|
+
} else if (idx.bySentinel?.size === 1 && !idx.otherwise) {
|
|
2634
|
+
for (const [key, byValue] of idx.bySentinel) {
|
|
2635
|
+
const candidates = byValue as unknown as Map<LiteralValue | symbol, ReadonlyArray<AST>>
|
|
2636
|
+
for (const [literal, indexes] of byValue) {
|
|
2637
|
+
candidates.set(literal, Object.freeze(indexes.map((index) => types[index])))
|
|
2638
|
+
}
|
|
2639
|
+
idx = (input) =>
|
|
2640
|
+
Predicate.isObjectKeyword(input) && Object.hasOwn(input, key)
|
|
2641
|
+
? candidates.get((input as any)[key]) ?? emptyCandidates
|
|
2642
|
+
: emptyCandidates
|
|
2643
|
+
}
|
|
2644
|
+
}
|
|
2645
|
+
|
|
2558
2646
|
candidateIndexCache.set(types, idx)
|
|
2559
2647
|
return idx
|
|
2560
2648
|
}
|
|
2561
2649
|
|
|
2562
2650
|
function filterLiterals(input: any) {
|
|
2563
2651
|
return (ast: AST) => {
|
|
2564
|
-
const encoded =
|
|
2652
|
+
const encoded = toCandidate(ast)
|
|
2565
2653
|
return encoded._tag === "Literal" ?
|
|
2566
2654
|
encoded.literal === input
|
|
2567
2655
|
: encoded._tag === "UniqueSymbol" ?
|
|
@@ -2578,12 +2666,14 @@ function filterLiterals(input: any) {
|
|
|
2578
2666
|
*/
|
|
2579
2667
|
export function getCandidates(input: any, types: ReadonlyArray<AST>): ReadonlyArray<AST> {
|
|
2580
2668
|
const idx = getIndex(types)
|
|
2669
|
+
if (typeof idx === "function") return idx(input)
|
|
2670
|
+
|
|
2581
2671
|
const runtimeType: Type = input === null ? "null" : Array.isArray(input) ? "array" : typeof input
|
|
2582
2672
|
|
|
2583
2673
|
// 1. Try sentinel-based dispatch (most selective)
|
|
2584
2674
|
if (idx.bySentinel) {
|
|
2585
|
-
const base = idx.otherwise?.[runtimeType] ??
|
|
2586
|
-
if (
|
|
2675
|
+
const base = idx.otherwise?.[runtimeType] ?? emptyCandidates
|
|
2676
|
+
if (Predicate.isObjectKeyword(input)) {
|
|
2587
2677
|
const selected = new Set(base)
|
|
2588
2678
|
for (const [k, m] of idx.bySentinel) {
|
|
2589
2679
|
if (Object.hasOwn(input, k)) {
|
|
@@ -2593,13 +2683,13 @@ export function getCandidates(input: any, types: ReadonlyArray<AST>): ReadonlyAr
|
|
|
2593
2683
|
}
|
|
2594
2684
|
}
|
|
2595
2685
|
}
|
|
2596
|
-
return Array.from(selected).sort((a, b) => a - b).map((i) => types[i])
|
|
2686
|
+
return Array.from(selected).sort((a, b) => a - b).map((i) => types[i])
|
|
2597
2687
|
}
|
|
2598
2688
|
return base.map((i) => types[i])
|
|
2599
2689
|
}
|
|
2600
2690
|
|
|
2601
2691
|
// 2. Fallback: runtime-type dispatch only
|
|
2602
|
-
return (idx.
|
|
2692
|
+
return (idx.otherwise?.[runtimeType] ?? emptyCandidates).map((i) => types[i]).filter(filterLiterals(input))
|
|
2603
2693
|
}
|
|
2604
2694
|
|
|
2605
2695
|
/**
|
|
@@ -2617,15 +2707,14 @@ export function getCandidates(input: any, types: ReadonlyArray<AST>): ReadonlyAr
|
|
|
2617
2707
|
*
|
|
2618
2708
|
* **Example** (Inspecting a union AST)
|
|
2619
2709
|
*
|
|
2620
|
-
* ```ts
|
|
2710
|
+
* ```ts import.meta.vitest
|
|
2621
2711
|
* import { Schema, SchemaAST } from "effect"
|
|
2622
2712
|
*
|
|
2623
2713
|
* const schema = Schema.Union([Schema.String, Schema.Number])
|
|
2624
2714
|
* const ast = schema.ast
|
|
2625
2715
|
*
|
|
2626
2716
|
* if (SchemaAST.isUnion(ast)) {
|
|
2627
|
-
*
|
|
2628
|
-
* console.log(ast.mode) // "anyOf"
|
|
2717
|
+
* [ast.types.length, ast.mode] // => [2, "anyOf"]
|
|
2629
2718
|
* }
|
|
2630
2719
|
* ```
|
|
2631
2720
|
*
|
|
@@ -2658,34 +2747,38 @@ export class Union<A extends AST = AST> extends Base {
|
|
|
2658
2747
|
// oxlint-disable-next-line @typescript-eslint/no-this-alias
|
|
2659
2748
|
const ast = this
|
|
2660
2749
|
|
|
2661
|
-
return (
|
|
2662
|
-
if (
|
|
2663
|
-
return
|
|
2750
|
+
return (input, options) => {
|
|
2751
|
+
if (input === InternalParser.missing) {
|
|
2752
|
+
return InternalParser.missingExit
|
|
2664
2753
|
}
|
|
2665
|
-
const input = oinput.value
|
|
2666
2754
|
const candidates = getCandidates(input, ast.types)
|
|
2667
2755
|
|
|
2756
|
+
if (candidates.length === 1) {
|
|
2757
|
+
const result = recur(candidates[0])(input, options)
|
|
2758
|
+
if ((result as Exit.Exit<unknown, SchemaIssue.Issue>)._tag === "Success") return result
|
|
2759
|
+
return effectIsExit(result)
|
|
2760
|
+
? failSingleUnionCandidate(ast, (result as Exit.Failure<unknown, SchemaIssue.Issue>).cause)
|
|
2761
|
+
: Effect.catchCause(result, (cause) => failSingleUnionCandidate(ast, cause))
|
|
2762
|
+
}
|
|
2763
|
+
|
|
2668
2764
|
const state = {
|
|
2669
2765
|
ast,
|
|
2670
2766
|
recur,
|
|
2671
|
-
oinput,
|
|
2672
2767
|
input,
|
|
2673
2768
|
out: undefined,
|
|
2674
|
-
successes: [],
|
|
2769
|
+
successes: ast.mode === "oneOf" ? [] : undefined,
|
|
2675
2770
|
issues: undefined as Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
|
|
2676
2771
|
options
|
|
2677
2772
|
}
|
|
2678
2773
|
const concurrency = resolveConcurrency(options?.concurrency)
|
|
2679
2774
|
const eff = parseUnion(state, candidates, concurrency ? { ...concurrency, orderedStep: true } : undefined)
|
|
2680
2775
|
if (!eff) {
|
|
2681
|
-
return state.out
|
|
2682
|
-
? Effect.succeed(state.out)
|
|
2683
|
-
: Effect.fail(new SchemaIssue.AnyOf(ast, input, state.issues ?? []))
|
|
2776
|
+
return state.out ?? Effect.fail(new SchemaIssue.AnyOf(ast, state.issues ?? []))
|
|
2684
2777
|
}
|
|
2685
|
-
return Effect.
|
|
2686
|
-
return state.out
|
|
2687
|
-
? Effect.succeed(
|
|
2688
|
-
: Effect.fail(new SchemaIssue.AnyOf(ast,
|
|
2778
|
+
return Effect.flatMapEager(eff, (_) => {
|
|
2779
|
+
return state.out === InternalParser.sameExit
|
|
2780
|
+
? Effect.succeed(input)
|
|
2781
|
+
: state.out ?? Effect.fail(new SchemaIssue.AnyOf(ast, state.issues ?? []))
|
|
2689
2782
|
})
|
|
2690
2783
|
}
|
|
2691
2784
|
}
|
|
@@ -2750,19 +2843,28 @@ export class Union<A extends AST = AST> extends Base {
|
|
|
2750
2843
|
}
|
|
2751
2844
|
}
|
|
2752
2845
|
|
|
2846
|
+
function failSingleUnionCandidate(
|
|
2847
|
+
ast: Union,
|
|
2848
|
+
cause: Cause.Cause<SchemaIssue.Issue>
|
|
2849
|
+
) {
|
|
2850
|
+
const issue = InternalSchemaCause.getSchemaIssue(cause)
|
|
2851
|
+
return issue
|
|
2852
|
+
? Exit.fail(new SchemaIssue.AnyOf(ast, [issue]))
|
|
2853
|
+
: Exit.failCause(cause)
|
|
2854
|
+
}
|
|
2855
|
+
|
|
2753
2856
|
const parseUnion = iterateEager<{
|
|
2754
2857
|
readonly recur: (ast: AST) => SchemaParser.Parser
|
|
2755
2858
|
readonly ast: Union
|
|
2756
|
-
readonly oinput: Option.Option<unknown>
|
|
2757
2859
|
readonly input: unknown
|
|
2758
2860
|
readonly options: ParseOptions
|
|
2759
|
-
out:
|
|
2760
|
-
successes: Array<AST>
|
|
2861
|
+
out: Exit.Success<unknown, SchemaIssue.Issue> | undefined
|
|
2862
|
+
readonly successes: Array<AST> | undefined
|
|
2761
2863
|
issues: Array<SchemaIssue.Issue> | undefined
|
|
2762
2864
|
}, AST>()({
|
|
2763
2865
|
onItem(s, ast) {
|
|
2764
2866
|
const parser = s.recur(ast)
|
|
2765
|
-
return parser(s.
|
|
2867
|
+
return parser(s.input, s.options)
|
|
2766
2868
|
},
|
|
2767
2869
|
step(s, candidate, exit) {
|
|
2768
2870
|
if (exit._tag === "Failure") {
|
|
@@ -2773,13 +2875,14 @@ const parseUnion = iterateEager<{
|
|
|
2773
2875
|
if (s.issues) s.issues.push(issue)
|
|
2774
2876
|
else s.issues = [issue]
|
|
2775
2877
|
} else {
|
|
2776
|
-
if (s.out && s.
|
|
2878
|
+
if (s.out && s.successes) {
|
|
2777
2879
|
s.successes.push(candidate)
|
|
2778
|
-
return Exit.fail(new SchemaIssue.OneOf(s.ast, s.
|
|
2880
|
+
return Exit.fail(new SchemaIssue.OneOf(s.ast, s.successes))
|
|
2779
2881
|
}
|
|
2780
|
-
s.out = exit
|
|
2781
|
-
s.successes
|
|
2782
|
-
|
|
2882
|
+
s.out = exit
|
|
2883
|
+
if (s.successes) {
|
|
2884
|
+
s.successes.push(candidate)
|
|
2885
|
+
} else {
|
|
2783
2886
|
return Exit.void
|
|
2784
2887
|
}
|
|
2785
2888
|
}
|
|
@@ -2825,7 +2928,7 @@ export function memoizeThunk<A>(f: () => A): () => A {
|
|
|
2825
2928
|
*
|
|
2826
2929
|
* **Example** (Defining recursive schema ASTs)
|
|
2827
2930
|
*
|
|
2828
|
-
* ```ts
|
|
2931
|
+
* ```ts import.meta.vitest
|
|
2829
2932
|
* import { Schema, SchemaAST } from "effect"
|
|
2830
2933
|
*
|
|
2831
2934
|
* interface Category {
|
|
@@ -2838,7 +2941,7 @@ export function memoizeThunk<A>(f: () => A): () => A {
|
|
|
2838
2941
|
* children: Schema.Array(Schema.suspend((): Schema.Codec<Category> => Category))
|
|
2839
2942
|
* })
|
|
2840
2943
|
*
|
|
2841
|
-
* //
|
|
2944
|
+
* SchemaAST.isObjects(Category.ast) // => true
|
|
2842
2945
|
* ```
|
|
2843
2946
|
*
|
|
2844
2947
|
* @see {@link isSuspend}
|
|
@@ -2856,7 +2959,7 @@ export class Suspend extends Base {
|
|
|
2856
2959
|
encoding?: Encoding,
|
|
2857
2960
|
context?: Context
|
|
2858
2961
|
) {
|
|
2859
|
-
if (checks
|
|
2962
|
+
if (checks) {
|
|
2860
2963
|
throw new Error("Cannot add checks to Suspend")
|
|
2861
2964
|
}
|
|
2862
2965
|
super(annotations, undefined, encoding, context)
|
|
@@ -2864,7 +2967,8 @@ export class Suspend extends Base {
|
|
|
2864
2967
|
}
|
|
2865
2968
|
/** @internal */
|
|
2866
2969
|
getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
|
|
2867
|
-
|
|
2970
|
+
let parser: SchemaParser.Parser
|
|
2971
|
+
return (input, options) => (parser ??= recur(this.thunk()))(input, options)
|
|
2868
2972
|
}
|
|
2869
2973
|
/** @internal */
|
|
2870
2974
|
recur(recur: (ast: AST) => AST) {
|
|
@@ -2999,7 +3103,7 @@ export function makeFilter<T>(
|
|
|
2999
3103
|
aborted: boolean = false
|
|
3000
3104
|
): Filter<T> {
|
|
3001
3105
|
return new Filter(
|
|
3002
|
-
(input, ast, options) => SchemaIssue.
|
|
3106
|
+
(input, ast, options) => SchemaIssue.normalizeFilterOutput(ast, filter(input, ast, options)),
|
|
3003
3107
|
annotations,
|
|
3004
3108
|
aborted
|
|
3005
3109
|
)
|
|
@@ -3011,7 +3115,7 @@ export function makeFilterByGuard<T extends E, E>(
|
|
|
3011
3115
|
annotations?: Schema.Annotations.Filter
|
|
3012
3116
|
): Filter<any> {
|
|
3013
3117
|
return new Filter(
|
|
3014
|
-
(input: E) => is(input) ? undefined : new SchemaIssue.InvalidValue(
|
|
3118
|
+
(input: E) => is(input) ? undefined : new SchemaIssue.InvalidValue(),
|
|
3015
3119
|
annotations,
|
|
3016
3120
|
true // after a guard, we always want to abort
|
|
3017
3121
|
)
|
|
@@ -3054,21 +3158,25 @@ export const finite = appendChecks(number, [isFinite()])
|
|
|
3054
3158
|
* **Details**
|
|
3055
3159
|
*
|
|
3056
3160
|
* The filter can be used with `Schema.filter` or attached directly to a
|
|
3057
|
-
* `String` AST node through checks. The regular expression
|
|
3058
|
-
*
|
|
3161
|
+
* `String` AST node through checks. The regular expression is cloned and its
|
|
3162
|
+
* `lastIndex` is reset before each test, so global and sticky expressions are
|
|
3163
|
+
* deterministic and the provided regular expression is not mutated. The
|
|
3164
|
+
* regular expression source is stored in annotations for serialization and
|
|
3165
|
+
* arbitrary generation.
|
|
3059
3166
|
*
|
|
3060
3167
|
* **Gotchas**
|
|
3061
3168
|
*
|
|
3062
|
-
*
|
|
3063
|
-
*
|
|
3064
|
-
* `y` flag.
|
|
3169
|
+
* When deriving an arbitrary, only `regExp.source` is used. Regular expression
|
|
3170
|
+
* flags are ignored because fast-check does not support them.
|
|
3065
3171
|
*
|
|
3066
3172
|
* **Example** (Validating an email pattern)
|
|
3067
3173
|
*
|
|
3068
|
-
* ```ts
|
|
3174
|
+
* ```ts import.meta.vitest
|
|
3069
3175
|
* import { SchemaAST } from "effect"
|
|
3070
3176
|
*
|
|
3071
3177
|
* const emailFilter = SchemaAST.isPattern(/^[^@]+@[^@]+$/)
|
|
3178
|
+
* emailFilter.run("alice@example.com", SchemaAST.string, {}) // => undefined
|
|
3179
|
+
* emailFilter.run("invalid", SchemaAST.string, {})?._tag // => "InvalidValue"
|
|
3072
3180
|
* ```
|
|
3073
3181
|
*
|
|
3074
3182
|
* @see {@link Filter}
|
|
@@ -3077,8 +3185,12 @@ export const finite = appendChecks(number, [isFinite()])
|
|
|
3077
3185
|
*/
|
|
3078
3186
|
export function isPattern(regExp: globalThis.RegExp, annotations?: Schema.Annotations.Filter) {
|
|
3079
3187
|
const source = regExp.source
|
|
3188
|
+
const pattern = new globalThis.RegExp(source, regExp.flags)
|
|
3080
3189
|
return makeFilter(
|
|
3081
|
-
(s: string) =>
|
|
3190
|
+
(s: string) => {
|
|
3191
|
+
pattern.lastIndex = 0
|
|
3192
|
+
return pattern.test(s)
|
|
3193
|
+
},
|
|
3082
3194
|
{
|
|
3083
3195
|
expected: `a string matching the RegExp ${source}`,
|
|
3084
3196
|
representation: {
|
|
@@ -3145,7 +3257,7 @@ export function annotate<A extends AST>(ast: A, annotations: Schema.Annotations.
|
|
|
3145
3257
|
|
|
3146
3258
|
/** @internal */
|
|
3147
3259
|
export function replaceChecks<A extends AST>(ast: A, checks: Checks | undefined): A {
|
|
3148
|
-
if (ast._tag === "Suspend" && checks
|
|
3260
|
+
if (ast._tag === "Suspend" && checks) {
|
|
3149
3261
|
throw new Error("Cannot add checks to Suspend")
|
|
3150
3262
|
}
|
|
3151
3263
|
if (ast.checks === checks) {
|
|
@@ -3370,11 +3482,11 @@ function parseParameter(ast: AST): {
|
|
|
3370
3482
|
}
|
|
3371
3483
|
|
|
3372
3484
|
/** @internal */
|
|
3373
|
-
export function record(key: AST, value: AST
|
|
3485
|
+
export function record(key: AST, value: AST): Objects {
|
|
3374
3486
|
const { literals, parameters: indexSignatures } = parseParameter(key)
|
|
3375
3487
|
return new Objects(
|
|
3376
3488
|
literals.map((literal) => new PropertySignature(literal, value)),
|
|
3377
|
-
indexSignatures.map((parameter) => new IndexSignature(parameter, value
|
|
3489
|
+
indexSignatures.map((parameter) => new IndexSignature(parameter, value))
|
|
3378
3490
|
)
|
|
3379
3491
|
}
|
|
3380
3492
|
|
|
@@ -3430,12 +3542,12 @@ function extractStructuralChecks(checks: Checks): Checks | undefined {
|
|
|
3430
3542
|
*
|
|
3431
3543
|
* **Example** (Getting the type AST)
|
|
3432
3544
|
*
|
|
3433
|
-
* ```ts
|
|
3545
|
+
* ```ts import.meta.vitest
|
|
3434
3546
|
* import { Schema, SchemaAST } from "effect"
|
|
3435
3547
|
*
|
|
3436
3548
|
* const schema = Schema.NumberFromString
|
|
3437
3549
|
* const typeAst = SchemaAST.toType(schema.ast)
|
|
3438
|
-
*
|
|
3550
|
+
* typeAst._tag // => "Number"
|
|
3439
3551
|
* ```
|
|
3440
3552
|
*
|
|
3441
3553
|
* @see {@link toEncoded}
|
|
@@ -3477,12 +3589,12 @@ export const toType = memoize(<A extends AST>(ast: A): A => {
|
|
|
3477
3589
|
*
|
|
3478
3590
|
* **Example** (Getting the encoded AST)
|
|
3479
3591
|
*
|
|
3480
|
-
* ```ts
|
|
3592
|
+
* ```ts import.meta.vitest
|
|
3481
3593
|
* import { Schema, SchemaAST } from "effect"
|
|
3482
3594
|
*
|
|
3483
3595
|
* const schema = Schema.NumberFromString
|
|
3484
3596
|
* const encodedAst = SchemaAST.toEncoded(schema.ast)
|
|
3485
|
-
*
|
|
3597
|
+
* encodedAst._tag // => "String"
|
|
3486
3598
|
* ```
|
|
3487
3599
|
*
|
|
3488
3600
|
* @see {@link toType}
|
|
@@ -3553,63 +3665,50 @@ function fromConst<const T>(
|
|
|
3553
3665
|
ast: AST,
|
|
3554
3666
|
value: T
|
|
3555
3667
|
): SchemaParser.Parser {
|
|
3556
|
-
const succeed =
|
|
3557
|
-
return (
|
|
3558
|
-
if (
|
|
3559
|
-
|
|
3560
|
-
}
|
|
3561
|
-
return oinput.value === value
|
|
3668
|
+
const succeed = InternalParser.succeed(value)
|
|
3669
|
+
return (input) => {
|
|
3670
|
+
if (input === InternalParser.missing) return InternalParser.missingExit
|
|
3671
|
+
return input === value
|
|
3562
3672
|
? succeed
|
|
3563
|
-
: Effect.fail(
|
|
3673
|
+
: Effect.fail(
|
|
3674
|
+
new SchemaIssue.InvalidType(ast)
|
|
3675
|
+
)
|
|
3564
3676
|
}
|
|
3565
3677
|
}
|
|
3566
3678
|
|
|
3567
|
-
function fromAnyToConst<const T>(value: T): SchemaParser.Parser {
|
|
3568
|
-
const succeed = Effect.succeedSome(value)
|
|
3569
|
-
return (oinput) => oinput._tag === "None" ? Effect.succeedNone : succeed
|
|
3570
|
-
}
|
|
3571
|
-
|
|
3572
3679
|
function fromRefinement<T>(
|
|
3573
3680
|
ast: AST,
|
|
3574
3681
|
refinement: (input: unknown) => input is T
|
|
3575
3682
|
): SchemaParser.Parser {
|
|
3576
|
-
return (
|
|
3577
|
-
if (
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3683
|
+
return (input) => {
|
|
3684
|
+
if (input === InternalParser.missing) return InternalParser.missingExit
|
|
3685
|
+
return refinement(input)
|
|
3686
|
+
? InternalParser.sameExit
|
|
3687
|
+
: Effect.fail(
|
|
3688
|
+
new SchemaIssue.InvalidType(ast)
|
|
3689
|
+
)
|
|
3583
3690
|
}
|
|
3584
3691
|
}
|
|
3585
3692
|
|
|
3586
|
-
function applyTemplateLiteralPartChecks<A>(ast: AST, value: A, options: ParseOptions): A | undefined {
|
|
3587
|
-
if (options?.disableChecks || ast.checks === undefined) return value
|
|
3588
|
-
const issues: Array<SchemaIssue.Issue> = []
|
|
3589
|
-
collectIssues(ast.checks, value, issues, ast, options)
|
|
3590
|
-
return issues.length === 0 ? value : undefined
|
|
3591
|
-
}
|
|
3592
|
-
|
|
3593
3693
|
function segmentTemplateLiteralParts(
|
|
3594
|
-
|
|
3694
|
+
ast: TemplateLiteral,
|
|
3595
3695
|
input: string,
|
|
3596
3696
|
options: ParseOptions
|
|
3597
3697
|
): Array<string> | undefined {
|
|
3598
|
-
const
|
|
3599
|
-
|
|
3600
|
-
|
|
3601
|
-
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
minimumLengths[i] = minimumLengths[i + 1] + (literals[i]?.length ?? 0)
|
|
3698
|
+
const parts = ast.encodedParts
|
|
3699
|
+
const literals = ast.literals
|
|
3700
|
+
const inputLength = input.length
|
|
3701
|
+
for (let i = 0; i < literals.length; i++) {
|
|
3702
|
+
const literal = literals[i]
|
|
3703
|
+
if (literal && !input.includes(literal)) return undefined
|
|
3605
3704
|
}
|
|
3606
|
-
if (
|
|
3705
|
+
if (ast.suffixLengths[0] > inputLength) return undefined
|
|
3607
3706
|
|
|
3608
3707
|
const out = new Array<string>(parts.length)
|
|
3609
|
-
|
|
3708
|
+
let failures: Set<number> | undefined
|
|
3610
3709
|
function go(i: number, pos: number): boolean {
|
|
3611
|
-
if (i === parts.length) return pos ===
|
|
3612
|
-
if (failures
|
|
3710
|
+
if (i === parts.length) return pos === inputLength
|
|
3711
|
+
if (failures?.has(i * (inputLength + 1) + pos)) return false
|
|
3613
3712
|
const part = parts[i]
|
|
3614
3713
|
if (i === parts.length - 1) {
|
|
3615
3714
|
const s = input.slice(pos)
|
|
@@ -3624,7 +3723,7 @@ function segmentTemplateLiteralParts(
|
|
|
3624
3723
|
return true
|
|
3625
3724
|
}
|
|
3626
3725
|
} else {
|
|
3627
|
-
const maximumEnd =
|
|
3726
|
+
const maximumEnd = inputLength - ast.suffixLengths[i + 1]
|
|
3628
3727
|
// Splits preceding a literal only need to consider occurrences of that literal.
|
|
3629
3728
|
const anchor = literals[i + 1]
|
|
3630
3729
|
let end = anchor === undefined ? maximumEnd : input.lastIndexOf(anchor, maximumEnd)
|
|
@@ -3638,7 +3737,8 @@ function segmentTemplateLiteralParts(
|
|
|
3638
3737
|
end = anchor === undefined ? end - 1 : input.lastIndexOf(anchor, end - 1)
|
|
3639
3738
|
}
|
|
3640
3739
|
}
|
|
3641
|
-
failures
|
|
3740
|
+
failures ??= new Set()
|
|
3741
|
+
failures.add(i * (inputLength + 1) + pos)
|
|
3642
3742
|
return false
|
|
3643
3743
|
}
|
|
3644
3744
|
return go(0, 0) ? out : undefined
|
|
@@ -3780,7 +3880,7 @@ const symbolToString = new Link(
|
|
|
3780
3880
|
return Effect.succeed(globalThis.String(sym))
|
|
3781
3881
|
}
|
|
3782
3882
|
return Effect.fail(
|
|
3783
|
-
new SchemaIssue.Forbidden(
|
|
3883
|
+
new SchemaIssue.Forbidden({ message: "cannot serialize to string, Symbol is not registered" })
|
|
3784
3884
|
)
|
|
3785
3885
|
})
|
|
3786
3886
|
)
|
|
@@ -3806,24 +3906,33 @@ export function isStringSymbol(annotations?: Schema.Annotations.Filter) {
|
|
|
3806
3906
|
export function collectIssues<T>(
|
|
3807
3907
|
checks: ReadonlyArray<Check<T>>,
|
|
3808
3908
|
value: T,
|
|
3809
|
-
issues:
|
|
3909
|
+
issues: Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
|
|
3810
3910
|
ast: AST,
|
|
3811
3911
|
options: ParseOptions
|
|
3812
|
-
) {
|
|
3912
|
+
): Arr.NonEmptyArray<SchemaIssue.Issue> | undefined {
|
|
3813
3913
|
for (let i = 0; i < checks.length; i++) {
|
|
3814
3914
|
const check = checks[i]
|
|
3815
3915
|
if (check._tag === "FilterGroup") {
|
|
3816
|
-
collectIssues(check.checks, value, issues, ast, options)
|
|
3916
|
+
issues = collectIssues(check.checks, value, issues, ast, options)
|
|
3917
|
+
if (
|
|
3918
|
+
issues &&
|
|
3919
|
+
(options.errors !== "all" || (issues[issues.length - 1] as SchemaIssue.Filter).filter.aborted)
|
|
3920
|
+
) {
|
|
3921
|
+
return issues
|
|
3922
|
+
}
|
|
3817
3923
|
} else {
|
|
3818
3924
|
const issue = check.run(value, ast, options)
|
|
3819
3925
|
if (issue) {
|
|
3820
|
-
|
|
3821
|
-
if (
|
|
3822
|
-
|
|
3926
|
+
const filter = new SchemaIssue.Filter(check, issue)
|
|
3927
|
+
if (issues) issues.push(filter)
|
|
3928
|
+
else issues = [filter]
|
|
3929
|
+
if (options.errors !== "all" || check.aborted) {
|
|
3930
|
+
return issues
|
|
3823
3931
|
}
|
|
3824
3932
|
}
|
|
3825
3933
|
}
|
|
3826
3934
|
}
|
|
3935
|
+
return issues
|
|
3827
3936
|
}
|
|
3828
3937
|
|
|
3829
3938
|
/** @internal */
|
|
@@ -3831,10 +3940,9 @@ export function runChecks<T>(
|
|
|
3831
3940
|
checks: readonly [Check<T>, ...Array<Check<T>>],
|
|
3832
3941
|
s: T
|
|
3833
3942
|
): Result.Result<T, SchemaIssue.Issue> {
|
|
3834
|
-
const issues:
|
|
3835
|
-
|
|
3836
|
-
|
|
3837
|
-
const issue = new SchemaIssue.Composite(unknown, Option.some(s), issues)
|
|
3943
|
+
const issues = collectIssues(checks, s, undefined, unknown, { errors: "all" })
|
|
3944
|
+
if (issues) {
|
|
3945
|
+
const issue = new SchemaIssue.Composite(unknown, issues)
|
|
3838
3946
|
return Result.fail(issue)
|
|
3839
3947
|
}
|
|
3840
3948
|
return Result.succeed(s)
|
|
@@ -3854,12 +3962,12 @@ export const ClassTypeId = "~effect/Schema/Class"
|
|
|
3854
3962
|
*
|
|
3855
3963
|
* **Example** (Reading annotations)
|
|
3856
3964
|
*
|
|
3857
|
-
* ```ts
|
|
3965
|
+
* ```ts import.meta.vitest
|
|
3858
3966
|
* import { Schema, SchemaAST } from "effect"
|
|
3859
3967
|
*
|
|
3860
3968
|
* const schema = Schema.String.annotate({ title: "Name" })
|
|
3861
3969
|
* const annotations = SchemaAST.resolve(schema.ast)
|
|
3862
|
-
*
|
|
3970
|
+
* annotations?.title // => "Name"
|
|
3863
3971
|
* ```
|
|
3864
3972
|
*
|
|
3865
3973
|
* @see {@link resolveAt}
|
|
@@ -4016,8 +4124,8 @@ export const Json = new Declaration(
|
|
|
4016
4124
|
[],
|
|
4017
4125
|
() => (input, ast) =>
|
|
4018
4126
|
isJson(input) ?
|
|
4019
|
-
|
|
4020
|
-
Effect.fail(new SchemaIssue.InvalidType(ast
|
|
4127
|
+
InternalParser.sameExit :
|
|
4128
|
+
Effect.fail(new SchemaIssue.InvalidType(ast)),
|
|
4021
4129
|
{
|
|
4022
4130
|
representation: {
|
|
4023
4131
|
id: "effect/schema/Json",
|
|
@@ -4048,7 +4156,7 @@ export const unknownToJson = new Link(
|
|
|
4048
4156
|
export const objectKeywordToJson = new Link(
|
|
4049
4157
|
new Union([
|
|
4050
4158
|
new Arrays(false, [], [Json]),
|
|
4051
|
-
new Objects([], [new IndexSignature(string, Json
|
|
4159
|
+
new Objects([], [new IndexSignature(string, Json)])
|
|
4052
4160
|
], "anyOf"),
|
|
4053
4161
|
SchemaTransformation.passthrough()
|
|
4054
4162
|
)
|
|
@@ -4068,8 +4176,8 @@ const StringTree = new Declaration(
|
|
|
4068
4176
|
[],
|
|
4069
4177
|
() => (input, ast) =>
|
|
4070
4178
|
isStringTree(input) ?
|
|
4071
|
-
|
|
4072
|
-
Effect.fail(new SchemaIssue.InvalidType(ast
|
|
4179
|
+
InternalParser.sameExit :
|
|
4180
|
+
Effect.fail(new SchemaIssue.InvalidType(ast)),
|
|
4073
4181
|
{ expected: "StringTree", toCodecStringTree: () => undefined }
|
|
4074
4182
|
)
|
|
4075
4183
|
|