effect 4.0.0-beta.99 → 4.0.0-rc.108
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/AGENTS.md +381 -0
- package/CLAUDE.md +381 -0
- package/README.md +14 -19
- package/ai-docs/README.md +44 -0
- package/ai-docs/package.json +36 -0
- package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
- package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
- package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
- package/ai-docs/src/01_effect/01_basics/index.md +5 -0
- package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
- package/ai-docs/src/01_effect/02_schema/index.md +7 -0
- package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
- package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
- package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
- package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
- package/ai-docs/src/01_effect/03_services/index.md +5 -0
- package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
- package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
- package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
- package/ai-docs/src/01_effect/04_errors/index.md +1 -0
- package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
- package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
- package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
- package/ai-docs/src/01_effect/05_resources/index.md +3 -0
- package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
- package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
- package/ai-docs/src/01_effect/06_running/index.md +1 -0
- package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
- package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
- package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
- package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
- package/ai-docs/src/03_stream/30_encoding.ts +165 -0
- package/ai-docs/src/03_stream/index.md +4 -0
- package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
- package/ai-docs/src/04_integration/index.md +5 -0
- package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
- package/ai-docs/src/05_batching/index.md +3 -0
- package/ai-docs/src/06_schedule/10_schedules.ts +110 -0
- package/ai-docs/src/06_schedule/index.md +3 -0
- package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
- package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
- package/ai-docs/src/07_datetime/index.md +5 -0
- package/ai-docs/src/08_observability/10_logging.ts +66 -0
- package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
- package/ai-docs/src/08_observability/index.md +7 -0
- package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
- package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
- package/ai-docs/src/09_testing/index.md +1 -0
- package/ai-docs/src/10_predicate/01_basics.ts +14 -0
- package/ai-docs/src/10_predicate/index.md +9 -0
- package/ai-docs/src/50_http-client/10_basics.ts +102 -0
- package/ai-docs/src/50_http-client/index.md +3 -0
- package/ai-docs/src/51_http-server/10_basics.ts +116 -0
- package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
- package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
- package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
- package/ai-docs/src/51_http-server/fixtures/api/Users.ts +91 -0
- package/ai-docs/src/51_http-server/fixtures/domain/User.ts +12 -0
- package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
- package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +36 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +71 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users.ts +62 -0
- package/ai-docs/src/51_http-server/index.md +3 -0
- package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
- package/ai-docs/src/60_child-process/index.md +3 -0
- package/ai-docs/src/70_cli/10_basics.ts +136 -0
- package/ai-docs/src/70_cli/index.md +5 -0
- package/ai-docs/src/71_ai/10_language-model.ts +156 -0
- package/ai-docs/src/71_ai/20_tools.ts +226 -0
- package/ai-docs/src/71_ai/30_chat.ts +158 -0
- package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
- package/ai-docs/src/71_ai/index.md +5 -0
- package/ai-docs/src/80_cluster/10_entities.ts +97 -0
- package/ai-docs/src/80_cluster/index.md +4 -0
- package/ai-docs/src/index.md +10 -0
- package/ai-docs/tsconfig.json +24 -0
- package/dist/Array.d.ts +971 -1037
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +462 -412
- 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.d.ts +3 -3
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +4 -3
- package/dist/Brand.js.map +1 -1
- package/dist/Cache.d.ts +409 -256
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +213 -134
- 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 +756 -769
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +588 -449
- 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 +226 -174
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +361 -267
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +229 -71
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +164 -95
- 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 +153 -277
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +172 -236
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +144 -176
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +227 -162
- 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 +22 -15
- 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 +18 -24
- 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 +110 -98
- 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 +157 -188
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +3142 -3345
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +1452 -1570
- 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 +39 -23
- 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 +86 -55
- package/dist/ExecutionPlan.d.ts.map +1 -1
- package/dist/ExecutionPlan.js +8 -29
- 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 +83 -147
- 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 +109 -75
- 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 +86 -60
- package/dist/FiberSet.js.map +1 -1
- package/dist/FileSystem.d.ts +154 -265
- 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 +24 -32
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +55 -60
- package/dist/Formatter.js.map +1 -1
- package/dist/Function.d.ts +106 -148
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +81 -62
- 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 +19 -18
- package/dist/Inspectable.d.ts.map +1 -1
- package/dist/Inspectable.js +20 -16
- 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 +241 -317
- 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 +46 -103
- 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 +319 -241
- 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 +202 -180
- 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 +208 -453
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +16 -5
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +10 -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 +202 -645
- 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 +63 -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 +132 -210
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +221 -324
- 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 +213 -393
- 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.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +1 -4
- 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 +166 -138
- 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 +361 -466
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +163 -216
- 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 -213
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +102 -213
- 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 +25 -19
- 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 +135 -218
- 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 +292 -1638
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +164 -805
- 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 +2056 -1269
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +2868 -1135
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +64 -72
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +698 -468
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +236 -188
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +281 -234
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +219 -190
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +303 -309
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaParser.d.ts +32 -2
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +170 -118
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +433 -1511
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +301 -2854
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +117 -77
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +139 -104
- 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 +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/ScopedRef.d.ts +3 -3
- package/dist/ScopedRef.d.ts.map +1 -1
- package/dist/ScopedRef.js +2 -2
- package/dist/ScopedRef.js.map +1 -1
- package/dist/Semaphore.d.ts +101 -13
- 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 +118 -108
- 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 +18 -5
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +6 -3
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +2467 -2962
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +1154 -1413
- 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 +46 -54
- 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 +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 +2 -2
- 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 +98 -131
- 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 +161 -137
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +89 -114
- package/dist/TxReentrantLock.d.ts.map +1 -1
- package/dist/TxReentrantLock.js +75 -53
- 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 +127 -70
- 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.d.ts +0 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -8
- package/dist/index.js.map +1 -1
- package/dist/internal/array.js.map +1 -1
- package/dist/internal/core.js +4 -3
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +5 -1
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/doNotation.js.map +1 -1
- package/dist/internal/effect.js +252 -108
- 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 +52 -3
- package/dist/internal/executionPlan.js.map +1 -1
- package/dist/internal/hashMap.js +12 -8
- 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 +2 -2
- 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 +18 -13
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/record.d.ts +0 -3
- package/dist/internal/record.d.ts.map +1 -1
- package/dist/internal/record.js +10 -5
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/redacted.js.map +1 -1
- package/dist/internal/references.js +3 -4
- 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 +15 -1
- package/dist/internal/schema/annotations.js.map +1 -1
- package/dist/internal/schema/cause.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.d.ts +2 -0
- package/dist/internal/schema/fromJsonSchemaDocument.d.ts.map +1 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js +761 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -0
- package/dist/internal/schema/fromRepresentation.d.ts +2 -0
- package/dist/internal/schema/fromRepresentation.d.ts.map +1 -0
- package/dist/internal/schema/fromRepresentation.js +245 -0
- package/dist/internal/schema/fromRepresentation.js.map +1 -0
- 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 +29 -49
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/toArbitrary.d.ts +2 -0
- package/dist/internal/schema/toArbitrary.d.ts.map +1 -0
- package/dist/internal/schema/{arbitrary.js → toArbitrary.js} +8 -83
- package/dist/internal/schema/toArbitrary.js.map +1 -0
- package/dist/internal/schema/toCodeDocument.d.ts +2 -0
- package/dist/internal/schema/toCodeDocument.d.ts.map +1 -0
- package/dist/internal/schema/toCodeDocument.js +438 -0
- package/dist/internal/schema/toCodeDocument.js.map +1 -0
- package/dist/internal/schema/toEquivalence.d.ts +2 -0
- package/dist/internal/schema/toEquivalence.d.ts.map +1 -0
- package/dist/internal/schema/{equivalence.js → toEquivalence.js} +15 -13
- package/dist/internal/schema/toEquivalence.js.map +1 -0
- package/dist/internal/schema/toJsonSchemaDocument.d.ts +2 -0
- package/dist/internal/schema/toJsonSchemaDocument.d.ts.map +1 -0
- package/dist/internal/schema/toJsonSchemaDocument.js +522 -0
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -0
- package/dist/internal/schema/toRepresentation.d.ts +2 -0
- package/dist/internal/schema/toRepresentation.d.ts.map +1 -0
- package/dist/internal/schema/toRepresentation.js +351 -0
- package/dist/internal/schema/toRepresentation.js.map +1 -0
- package/dist/internal/stackTraceLimit.js +3 -6
- 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 +24 -10
- 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 +65 -20
- 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 +31 -31
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +35 -34
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +121 -144
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +118 -140
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +22 -7
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js +87 -317
- 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 +56 -52
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/EmbeddingModel.d.ts +1 -1
- package/dist/unstable/ai/EmbeddingModel.js +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 +111 -68
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +127 -83
- 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 +320 -254
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +79 -71
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +71 -62
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +777 -245
- 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 +33 -11
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js +194 -378
- package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +131 -44
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Prompt.js +100 -36
- package/dist/unstable/ai/Prompt.js.map +1 -1
- package/dist/unstable/ai/Response.d.ts +47 -33
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +23 -18
- 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 +63 -44
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +59 -42
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/Toolkit.d.ts +35 -9
- package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
- package/dist/unstable/ai/Toolkit.js +32 -14
- 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 +15 -12
- 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.d.ts +2 -0
- package/dist/unstable/ai/internal/structured-output.d.ts.map +1 -0
- package/dist/unstable/ai/internal/structured-output.js +315 -0
- package/dist/unstable/ai/internal/structured-output.js.map +1 -0
- package/dist/unstable/cli/Argument.d.ts +279 -72
- package/dist/unstable/cli/Argument.d.ts.map +1 -1
- package/dist/unstable/cli/Argument.js +113 -34
- 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 +126 -76
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +136 -76
- 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 +736 -115
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +282 -56
- 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 +299 -83
- package/dist/unstable/cli/Param.d.ts.map +1 -1
- package/dist/unstable/cli/Param.js +146 -60
- 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 +377 -162
- 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 +54 -31
- 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 +2 -2
- 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.d.ts +5 -3
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +21 -13
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/bash.js +69 -9
- package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
- package/dist/unstable/cli/internal/completions/descriptor.js +24 -18
- package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/unstable/cli/internal/completions/fish.js +5 -5
- 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.d.ts +0 -48
- package/dist/unstable/cli/internal/config.d.ts.map +1 -1
- package/dist/unstable/cli/internal/config.js +8 -10
- package/dist/unstable/cli/internal/config.js.map +1 -1
- package/dist/unstable/cli/internal/help.d.ts.map +1 -1
- package/dist/unstable/cli/internal/help.js +4 -2
- 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 +5 -5
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cli/internal/wizard.js +2 -2
- 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 +7 -7
- 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 +32 -16
- 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 +12 -12
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js +9 -9
- 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 +7 -5
- package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityProxy.js +8 -5
- 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.d.ts.map +1 -1
- package/dist/unstable/cluster/Envelope.js +5 -4
- 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.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +13 -6
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +8 -0
- package/dist/unstable/cluster/Reply.d.ts.map +1 -1
- package/dist/unstable/cluster/Reply.js +17 -5
- package/dist/unstable/cluster/Reply.js.map +1 -1
- package/dist/unstable/cluster/Runner.d.ts +1 -1
- package/dist/unstable/cluster/Runner.js +1 -1
- package/dist/unstable/cluster/Runner.js.map +1 -1
- package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
- package/dist/unstable/cluster/RunnerAddress.js +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 +29 -23
- package/dist/unstable/cluster/RunnerServer.js.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.d.ts +3 -4
- package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.js +8 -7
- package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/Runners.d.ts +11 -15
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +32 -22
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/ShardId.js +1 -1
- package/dist/unstable/cluster/ShardId.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts +2 -2
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +164 -31
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +13 -5
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- 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.d.ts +4 -2
- package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
- package/dist/unstable/cluster/SingleRunner.js +2 -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.d.ts +7 -4
- package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +56 -25
- 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 +141 -79
- 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 +25 -13
- 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 +2 -2
- package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js +17 -0
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/cluster/internal/shardLock.d.ts +2 -0
- package/dist/unstable/cluster/internal/shardLock.d.ts.map +1 -0
- package/dist/unstable/cluster/internal/shardLock.js +4 -0
- package/dist/unstable/cluster/internal/shardLock.js.map +1 -0
- package/dist/unstable/devtools/DevTools.js.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.js +7 -2
- package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.d.ts +20 -20
- package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.js +8 -5
- 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/Ini.d.ts +20 -0
- package/dist/unstable/encoding/Ini.d.ts.map +1 -0
- package/dist/unstable/encoding/Ini.js +153 -0
- package/dist/unstable/encoding/Ini.js.map +1 -0
- package/dist/unstable/encoding/Msgpack.d.ts +2 -1
- package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
- package/dist/unstable/encoding/Msgpack.js +31 -19
- package/dist/unstable/encoding/Msgpack.js.map +1 -1
- package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
- package/dist/unstable/encoding/Ndjson.js +7 -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 +72 -31
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/encoding/Toml.d.ts +19 -0
- package/dist/unstable/encoding/Toml.d.ts.map +1 -0
- package/dist/unstable/encoding/Toml.js +434 -0
- package/dist/unstable/encoding/Toml.js.map +1 -0
- package/dist/unstable/encoding/Yaml.d.ts +19 -0
- package/dist/unstable/encoding/Yaml.d.ts.map +1 -0
- package/dist/unstable/encoding/Yaml.js +461 -0
- package/dist/unstable/encoding/Yaml.js.map +1 -0
- package/dist/unstable/encoding/index.d.ts +12 -0
- package/dist/unstable/encoding/index.d.ts.map +1 -1
- package/dist/unstable/encoding/index.js +12 -0
- 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 +17 -17
- package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventJournal.js +27 -19
- package/dist/unstable/eventlog/EventJournal.js.map +1 -1
- package/dist/unstable/eventlog/EventLog.d.ts +3 -3
- package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLog.js +18 -14
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.d.ts +8 -7
- package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js +16 -14
- package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.d.ts +31 -31
- package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.js +12 -8
- package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
- package/dist/unstable/eventlog/EventLogRemote.js +5 -5
- 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 +16 -7
- 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 +15 -7
- 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.d.ts.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.js +3 -6
- package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +3 -3
- 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 +54 -40
- 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/FindMyWay/internal/queryString.d.ts +11 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.d.ts.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.js +259 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.js.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/router.d.ts +2 -0
- package/dist/unstable/http/FindMyWay/internal/router.d.ts.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/router.js +665 -0
- package/dist/unstable/http/FindMyWay/internal/router.js.map +1 -0
- package/dist/unstable/http/FindMyWay.d.ts +33 -8
- package/dist/unstable/http/FindMyWay.d.ts.map +1 -1
- package/dist/unstable/http/FindMyWay.js +4 -7
- package/dist/unstable/http/FindMyWay.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts +2 -2
- package/dist/unstable/http/Headers.js +10 -10
- 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 +110 -47
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +79 -36
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.js +1 -1
- package/dist/unstable/http/HttpClientError.js.map +1 -1
- package/dist/unstable/http/HttpClientRequest.d.ts +44 -0
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +16 -12
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
- package/dist/unstable/http/HttpClientResponse.js +3 -18
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +7 -9
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +7 -8
- 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 +53 -3
- package/dist/unstable/http/HttpPlatform.js.map +1 -1
- package/dist/unstable/http/HttpRouter.d.ts +91 -92
- 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.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRequest.js +23 -15
- 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 +17 -5
- 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 +28 -9
- package/dist/unstable/http/Multipart.d.ts.map +1 -1
- package/dist/unstable/http/Multipart.js +65 -35
- package/dist/unstable/http/Multipart.js.map +1 -1
- package/dist/unstable/http/MultipartParser/HeadersParser.d.ts +53 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.js +14 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.js.map +1 -0
- package/dist/unstable/http/MultipartParser/Search.d.ts +11 -0
- package/dist/unstable/http/MultipartParser/Search.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/Search.js +14 -0
- package/dist/unstable/http/MultipartParser/Search.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.d.ts +5 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.js +82 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/headers.d.ts +3 -0
- package/dist/unstable/http/MultipartParser/internal/headers.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/headers.js +208 -0
- package/dist/unstable/http/MultipartParser/internal/headers.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.d.ts +8 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.js +241 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/search.d.ts +5 -0
- package/dist/unstable/http/MultipartParser/internal/search.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/search.js +120 -0
- package/dist/unstable/http/MultipartParser/internal/search.js.map +1 -0
- package/dist/unstable/http/MultipartParser.d.ts +98 -0
- package/dist/unstable/http/MultipartParser.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser.js +23 -0
- package/dist/unstable/http/MultipartParser.js.map +1 -0
- package/dist/unstable/http/Template.d.ts.map +1 -1
- package/dist/unstable/http/Template.js +3 -3
- 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 +26 -31
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/http/index.d.ts +1 -1
- package/dist/unstable/http/index.d.ts.map +1 -1
- package/dist/unstable/http/index.js +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/httpBody.d.ts +2 -0
- package/dist/unstable/http/internal/httpBody.d.ts.map +1 -0
- package/dist/unstable/http/internal/httpBody.js +10 -0
- package/dist/unstable/http/internal/httpBody.js.map +1 -0
- package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
- package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js +9 -9
- 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 +82 -30
- 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 +89 -51
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +48 -46
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +73 -16
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +18 -18
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +30 -30
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
- package/dist/unstable/httpapi/HttpApiGroup.js +2 -2
- 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 +225 -6
- package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.js +174 -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 +21 -13
- package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +110 -57
- 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 +71 -2
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +86 -7
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.d.ts +4 -3
- package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js +4 -4
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +11 -4
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.js +31 -15
- 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.d.ts +4 -3
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.js +3 -3
- 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.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistable.js +2 -1
- 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.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +15 -15
- 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 +108 -22
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +47 -26
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +31 -47
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/persistence/Redis.d.ts +2 -2
- package/dist/unstable/persistence/Redis.d.ts.map +1 -1
- package/dist/unstable/persistence/Redis.js +4 -4
- 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 +72 -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 +4 -2
- 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 +14 -13
- package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +131 -30
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +53 -34
- 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 +25 -4
- 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 +26 -12
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +40 -22
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcClientError.js +2 -2
- 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 +177 -96
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +13 -13
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +20 -15
- 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 +53 -51
- 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 +11 -12
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +28 -17
- 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 +12 -4
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +38 -17
- 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.d.ts +9 -1
- package/dist/unstable/sql/Migrator.d.ts.map +1 -1
- package/dist/unstable/sql/Migrator.js +15 -2
- 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 +8 -4
- package/dist/unstable/sql/SqlClient.js.map +1 -1
- package/dist/unstable/sql/SqlConnection.js.map +1 -1
- package/dist/unstable/sql/SqlError.d.ts +2 -2
- package/dist/unstable/sql/SqlError.js +15 -15
- 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.d.ts.map +1 -1
- package/dist/unstable/sql/SqlResolver.js +30 -24
- 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.d.ts.map +1 -1
- package/dist/unstable/sql/Statement.js +30 -27
- 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.d.ts.map +1 -1
- package/dist/unstable/workers/Worker.js +13 -14
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workers/WorkerError.d.ts +7 -7
- package/dist/unstable/workers/WorkerError.js +11 -11
- 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.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.js +13 -8
- 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 +26 -3
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +72 -6
- 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 +10 -14
- package/src/Array.ts +1068 -1070
- package/src/BigDecimal.ts +433 -756
- package/src/BigInt.ts +213 -269
- package/src/Boolean.ts +146 -188
- package/src/Brand.ts +4 -4
- package/src/Cache.ts +469 -851
- package/src/Cause.ts +167 -277
- package/src/Channel.ts +982 -831
- 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 +642 -335
- package/src/ConfigProvider.ts +267 -135
- package/src/Console.ts +289 -39
- package/src/Context.ts +323 -404
- package/src/Cron.ts +271 -219
- package/src/Crypto.ts +30 -23
- package/src/Data.ts +63 -82
- package/src/DateTime.ts +564 -660
- package/src/Deferred.ts +259 -258
- package/src/Duration.ts +244 -311
- package/src/Effect.ts +3215 -3394
- package/src/Encoding.ts +22 -40
- package/src/Equal.ts +59 -41
- package/src/Equivalence.ts +103 -105
- package/src/ErrorReporter.ts +51 -27
- package/src/ExecutionPlan.ts +91 -56
- package/src/Exit.ts +116 -192
- package/src/Fiber.ts +82 -149
- package/src/FiberHandle.ts +155 -107
- package/src/FiberMap.ts +225 -174
- package/src/FiberSet.ts +125 -83
- package/src/FileSystem.ts +156 -264
- package/src/Filter.ts +61 -33
- package/src/Formatter.ts +69 -76
- package/src/Function.ts +119 -151
- 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 +22 -20
- package/src/Iterable.ts +633 -797
- package/src/JsonPatch.ts +60 -113
- package/src/JsonPointer.ts +8 -8
- package/src/JsonSchema.ts +408 -251
- package/src/Latch.ts +23 -35
- package/src/Layer.ts +366 -265
- package/src/LayerMap.ts +49 -29
- package/src/LayerRef.ts +6 -2
- package/src/LogLevel.ts +114 -214
- package/src/Logger.ts +348 -700
- package/src/ManagedRuntime.ts +20 -5
- package/src/Match.ts +217 -252
- package/src/Metric.ts +520 -1092
- package/src/MutableHashMap.ts +218 -255
- package/src/MutableHashSet.ts +84 -89
- package/src/MutableList.ts +77 -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 +303 -441
- package/src/Option.ts +449 -813
- package/src/Order.ts +109 -109
- package/src/Ordering.ts +20 -23
- package/src/PartitionedSemaphore.ts +1 -4
- 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 +204 -165
- package/src/Random.ts +49 -74
- package/src/RcMap.ts +121 -63
- package/src/RcRef.ts +24 -13
- package/src/Record.ts +387 -487
- 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 -214
- package/src/RegExp.ts +10 -14
- package/src/Request.ts +36 -28
- package/src/RequestResolver.ts +202 -91
- package/src/Result.ts +314 -485
- package/src/Runtime.ts +50 -75
- package/src/Schedule.ts +311 -1737
- package/src/Scheduler.ts +20 -7
- package/src/Schema.ts +3475 -1913
- package/src/SchemaAST.ts +902 -573
- package/src/SchemaGetter.ts +351 -233
- package/src/SchemaIssue.ts +367 -334
- package/src/SchemaParser.ts +254 -148
- package/src/SchemaRepresentation.ts +732 -3414
- package/src/SchemaTransformation.ts +186 -97
- package/src/Scope.ts +123 -151
- package/src/ScopedCache.ts +1 -1
- package/src/ScopedRef.ts +6 -4
- package/src/Semaphore.ts +157 -54
- package/src/Sink.ts +129 -114
- package/src/Stdio.ts +24 -5
- package/src/Stream.ts +2745 -3173
- package/src/String.ts +275 -312
- package/src/Struct.ts +114 -118
- package/src/SubscriptionRef.ts +284 -252
- package/src/Symbol.ts +3 -3
- package/src/SynchronizedRef.ts +1 -1
- package/src/Terminal.ts +3 -3
- package/src/Tracer.ts +102 -55
- package/src/Trie.ts +287 -679
- package/src/Tuple.ts +99 -131
- 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 +215 -184
- package/src/TxReentrantLock.ts +136 -101
- package/src/TxRef.ts +51 -32
- package/src/TxSemaphore.ts +129 -95
- package/src/TxSubscriptionRef.ts +97 -70
- package/src/Types.ts +127 -70
- package/src/Unify.ts +45 -65
- package/src/Utils.ts +23 -16
- package/src/index.ts +0 -10
- package/src/internal/core.ts +6 -5
- package/src/internal/dateTime.ts +7 -1
- package/src/internal/effect.ts +304 -134
- package/src/internal/executionPlan.ts +106 -10
- package/src/internal/hashMap.ts +20 -14
- package/src/internal/matcher.ts +3 -3
- package/src/internal/persistence.ts +2 -0
- package/src/internal/rcRef.ts +24 -16
- package/src/internal/record.ts +11 -7
- package/src/internal/references.ts +3 -7
- package/src/internal/schedule.ts +4 -4
- package/src/internal/schema/annotations.ts +48 -1
- package/src/internal/schema/fromJsonSchemaDocument.ts +977 -0
- package/src/internal/schema/fromRepresentation.ts +339 -0
- package/src/internal/schema/parser.ts +22 -0
- package/src/internal/schema/schema.ts +46 -63
- package/src/internal/schema/{arbitrary.ts → toArbitrary.ts} +9 -81
- package/src/internal/schema/toCodeDocument.ts +572 -0
- package/src/internal/schema/{equivalence.ts → toEquivalence.ts} +12 -7
- package/src/internal/schema/toJsonSchemaDocument.ts +549 -0
- package/src/internal/schema/toRepresentation.ts +404 -0
- package/src/internal/stackTraceLimit.ts +3 -7
- package/src/internal/trie.ts +21 -12
- package/src/testing/FastCheck.ts +8 -7
- package/src/testing/TestClock.ts +86 -32
- package/src/testing/TestConsole.ts +32 -31
- package/src/testing/TestSchema.ts +40 -40
- package/src/unstable/ai/AiError.ts +119 -141
- package/src/unstable/ai/AnthropicStructuredOutput.ts +103 -334
- package/src/unstable/ai/Chat.ts +133 -98
- package/src/unstable/ai/EmbeddingModel.ts +1 -1
- package/src/unstable/ai/IdGenerator.ts +32 -28
- package/src/unstable/ai/LanguageModel.ts +141 -97
- package/src/unstable/ai/McpProtocol.ts +48 -0
- package/src/unstable/ai/McpSchema.ts +92 -81
- package/src/unstable/ai/McpServer.ts +1057 -303
- package/src/unstable/ai/Model.ts +9 -20
- package/src/unstable/ai/OpenAiStructuredOutput.ts +231 -396
- package/src/unstable/ai/Prompt.ts +212 -63
- package/src/unstable/ai/Response.ts +52 -38
- package/src/unstable/ai/Telemetry.ts +46 -13
- package/src/unstable/ai/Tokenizer.ts +14 -3
- package/src/unstable/ai/Tool.ts +81 -48
- package/src/unstable/ai/Toolkit.ts +45 -15
- package/src/unstable/ai/index.ts +5 -0
- package/src/unstable/ai/internal/codec-transformer.ts +13 -7
- 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 +453 -0
- package/src/unstable/cli/Argument.ts +279 -72
- package/src/unstable/cli/CliError.ts +159 -91
- package/src/unstable/cli/CliOutput.ts +44 -58
- package/src/unstable/cli/Command.ts +764 -124
- 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 +336 -100
- package/src/unstable/cli/Primitive.ts +383 -156
- package/src/unstable/cli/Prompt.ts +64 -34
- package/src/unstable/cli/internal/ansi.ts +2 -2
- package/src/unstable/cli/internal/command.ts +28 -15
- package/src/unstable/cli/internal/completions/bash.ts +59 -9
- package/src/unstable/cli/internal/completions/descriptor.ts +14 -20
- package/src/unstable/cli/internal/completions/fish.ts +5 -7
- package/src/unstable/cli/internal/config.ts +8 -10
- package/src/unstable/cli/internal/help.ts +4 -2
- package/src/unstable/cli/internal/lexer.ts +8 -2
- package/src/unstable/cli/internal/parser.ts +5 -5
- package/src/unstable/cli/internal/wizard.ts +2 -2
- package/src/unstable/cluster/ClusterError.ts +7 -7
- package/src/unstable/cluster/ClusterSchema.ts +8 -8
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +36 -20
- package/src/unstable/cluster/Entity.ts +23 -19
- package/src/unstable/cluster/EntityProxy.ts +16 -7
- package/src/unstable/cluster/EntityResource.ts +2 -2
- package/src/unstable/cluster/Envelope.ts +5 -4
- package/src/unstable/cluster/HttpRunner.ts +6 -4
- package/src/unstable/cluster/Message.ts +9 -9
- package/src/unstable/cluster/MessageStorage.ts +24 -20
- package/src/unstable/cluster/Reply.ts +26 -7
- package/src/unstable/cluster/Runner.ts +1 -1
- package/src/unstable/cluster/RunnerAddress.ts +1 -1
- package/src/unstable/cluster/RunnerHealth.ts +1 -1
- package/src/unstable/cluster/RunnerServer.ts +45 -18
- package/src/unstable/cluster/RunnerStorage.ts +11 -9
- package/src/unstable/cluster/Runners.ts +48 -26
- package/src/unstable/cluster/ShardId.ts +1 -1
- package/src/unstable/cluster/Sharding.ts +223 -55
- package/src/unstable/cluster/ShardingConfig.ts +8 -4
- package/src/unstable/cluster/SingleRunner.ts +4 -2
- package/src/unstable/cluster/SingletonAddress.ts +1 -1
- package/src/unstable/cluster/Snowflake.ts +8 -8
- package/src/unstable/cluster/SqlMessageStorage.ts +84 -36
- package/src/unstable/cluster/SqlRunnerStorage.ts +223 -133
- package/src/unstable/cluster/internal/entityManager.ts +43 -26
- package/src/unstable/cluster/internal/resourceMap.ts +5 -2
- package/src/unstable/cluster/internal/resourceRef.ts +27 -5
- package/src/unstable/cluster/internal/shardLock.ts +9 -0
- package/src/unstable/devtools/DevToolsClient.ts +3 -2
- package/src/unstable/devtools/DevToolsSchema.ts +10 -5
- package/src/unstable/encoding/Ini.ts +174 -0
- package/src/unstable/encoding/Msgpack.ts +61 -40
- package/src/unstable/encoding/Ndjson.ts +9 -1
- package/src/unstable/encoding/Sse.ts +109 -37
- package/src/unstable/encoding/Toml.ts +504 -0
- package/src/unstable/encoding/Yaml.ts +541 -0
- package/src/unstable/encoding/index.ts +15 -0
- package/src/unstable/eventlog/Event.ts +20 -20
- package/src/unstable/eventlog/EventGroup.ts +4 -4
- package/src/unstable/eventlog/EventJournal.ts +30 -22
- package/src/unstable/eventlog/EventLog.ts +24 -14
- package/src/unstable/eventlog/EventLogEncryption.ts +17 -18
- package/src/unstable/eventlog/EventLogMessage.ts +15 -9
- package/src/unstable/eventlog/EventLogRemote.ts +5 -5
- package/src/unstable/eventlog/EventLogServer.ts +41 -7
- package/src/unstable/eventlog/EventLogServerEncrypted.ts +15 -7
- package/src/unstable/eventlog/EventLogServerUnencrypted.ts +15 -7
- package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
- package/src/unstable/eventlog/SqlEventJournal.ts +8 -6
- package/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +1 -1
- package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +6 -3
- package/src/unstable/http/Cookies.ts +64 -45
- package/src/unstable/http/Etag.ts +1 -1
- package/src/unstable/http/FetchHttpClient.ts +3 -1
- package/src/unstable/http/FindMyWay/internal/queryString.ts +420 -0
- package/src/unstable/http/FindMyWay/internal/router.ts +950 -0
- package/src/unstable/http/FindMyWay.ts +65 -6
- package/src/unstable/http/Headers.ts +10 -10
- package/src/unstable/http/HttpBody.ts +20 -5
- package/src/unstable/http/HttpClient.ts +215 -78
- package/src/unstable/http/HttpClientError.ts +1 -1
- package/src/unstable/http/HttpClientRequest.ts +59 -12
- package/src/unstable/http/HttpClientResponse.ts +5 -21
- package/src/unstable/http/HttpEffect.ts +20 -19
- package/src/unstable/http/HttpMethod.ts +6 -9
- package/src/unstable/http/HttpMiddleware.ts +202 -39
- package/src/unstable/http/HttpPlatform.ts +129 -6
- package/src/unstable/http/HttpRouter.ts +109 -101
- package/src/unstable/http/HttpServer.ts +13 -13
- package/src/unstable/http/HttpServerError.ts +2 -2
- package/src/unstable/http/HttpServerRequest.ts +31 -17
- package/src/unstable/http/HttpServerResponse.ts +38 -6
- package/src/unstable/http/HttpStaticServer.ts +35 -7
- package/src/unstable/http/Multipart.ts +67 -36
- package/src/unstable/http/MultipartParser/HeadersParser.ts +68 -0
- package/src/unstable/http/MultipartParser/Search.ts +17 -0
- package/src/unstable/http/MultipartParser/internal/contentType.ts +103 -0
- package/src/unstable/http/MultipartParser/internal/headers.ts +244 -0
- package/src/unstable/http/MultipartParser/internal/multipart.ts +279 -0
- package/src/unstable/http/MultipartParser/internal/search.ts +167 -0
- package/src/unstable/http/MultipartParser.ts +115 -0
- package/src/unstable/http/Template.ts +7 -6
- package/src/unstable/http/Url.ts +33 -63
- package/src/unstable/http/UrlParams.ts +27 -32
- package/src/unstable/http/index.ts +1 -1
- package/src/unstable/http/internal/compression.ts +196 -0
- package/src/unstable/http/internal/httpBody.ts +15 -0
- package/src/unstable/httpapi/HttpApi.ts +10 -11
- package/src/unstable/httpapi/HttpApiBuilder.ts +154 -33
- package/src/unstable/httpapi/HttpApiClient.ts +142 -61
- package/src/unstable/httpapi/HttpApiEndpoint.ts +159 -71
- package/src/unstable/httpapi/HttpApiError.ts +46 -52
- package/src/unstable/httpapi/HttpApiGroup.ts +17 -17
- package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
- package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
- package/src/unstable/httpapi/HttpApiSchema.ts +359 -6
- package/src/unstable/httpapi/OpenApi.ts +153 -62
- package/src/unstable/observability/OtlpExporter.ts +130 -12
- package/src/unstable/observability/OtlpLogger.ts +8 -6
- package/src/unstable/observability/OtlpMetrics.ts +42 -21
- package/src/unstable/observability/OtlpResource.ts +26 -17
- package/src/unstable/observability/OtlpTracer.ts +9 -5
- 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 +11 -10
- package/src/unstable/persistence/PersistedQueue.ts +18 -15
- package/src/unstable/persistence/Persistence.ts +153 -26
- package/src/unstable/persistence/RateLimiter.ts +79 -45
- package/src/unstable/persistence/Redis.ts +5 -5
- package/src/unstable/process/ChildProcess.ts +72 -21
- package/src/unstable/process/ChildProcessSpawner.ts +22 -11
- package/src/unstable/reactivity/AsyncResult.ts +23 -18
- package/src/unstable/reactivity/Atom.ts +161 -47
- package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
- package/src/unstable/reactivity/AtomRegistry.ts +25 -4
- 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 +65 -29
- package/src/unstable/rpc/RpcClientError.ts +2 -2
- 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 +22 -17
- package/src/unstable/rpc/RpcWorker.ts +5 -5
- package/src/unstable/schema/Model.ts +52 -50
- package/src/unstable/schema/VariantSchema.ts +51 -43
- package/src/unstable/socket/Socket.ts +42 -19
- package/src/unstable/sql/Migrator.ts +22 -9
- package/src/unstable/sql/SqlClient.ts +64 -56
- package/src/unstable/sql/SqlError.ts +15 -15
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlResolver.ts +41 -31
- package/src/unstable/sql/Statement.ts +44 -37
- package/src/unstable/workers/Transferable.ts +1 -1
- package/src/unstable/workers/Worker.ts +15 -16
- package/src/unstable/workers/WorkerError.ts +12 -12
- 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 +18 -13
- package/src/unstable/workflow/DurableQueue.ts +22 -20
- package/src/unstable/workflow/Workflow.ts +23 -26
- package/src/unstable/workflow/WorkflowEngine.ts +111 -8
- package/src/unstable/workflow/WorkflowProxy.ts +4 -2
- package/dist/SchemaError.d.ts +0 -53
- package/dist/SchemaError.d.ts.map +0 -1
- package/dist/SchemaError.js +0 -61
- package/dist/SchemaError.js.map +0 -1
- package/dist/SchemaUtils.d.ts +0 -28
- package/dist/SchemaUtils.d.ts.map +0 -1
- package/dist/SchemaUtils.js +0 -45
- package/dist/SchemaUtils.js.map +0 -1
- package/dist/internal/schema/arbitrary.d.ts +0 -5
- package/dist/internal/schema/arbitrary.d.ts.map +0 -1
- package/dist/internal/schema/arbitrary.js.map +0 -1
- package/dist/internal/schema/equivalence.d.ts +0 -2
- package/dist/internal/schema/equivalence.d.ts.map +0 -1
- package/dist/internal/schema/equivalence.js.map +0 -1
- package/dist/internal/schema/representation.d.ts +0 -2
- package/dist/internal/schema/representation.d.ts.map +0 -1
- package/dist/internal/schema/representation.js +0 -865
- package/dist/internal/schema/representation.js.map +0 -1
- 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/dist/unstable/http/Multipasta/HeadersParser.d.ts +0 -14
- package/dist/unstable/http/Multipasta/HeadersParser.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/HeadersParser.js +0 -14
- package/dist/unstable/http/Multipasta/HeadersParser.js.map +0 -1
- package/dist/unstable/http/Multipasta/Node.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Node.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Node.js +0 -14
- package/dist/unstable/http/Multipasta/Node.js.map +0 -1
- package/dist/unstable/http/Multipasta/Search.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Search.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Search.js +0 -14
- package/dist/unstable/http/Multipasta/Search.js.map +0 -1
- package/dist/unstable/http/Multipasta/Web.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Web.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Web.js +0 -14
- package/dist/unstable/http/Multipasta/Web.js.map +0 -1
- package/dist/unstable/http/Multipasta.d.ts +0 -15
- package/dist/unstable/http/Multipasta.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta.js +0 -15
- package/dist/unstable/http/Multipasta.js.map +0 -1
- package/src/SchemaError.ts +0 -64
- package/src/SchemaUtils.ts +0 -51
- package/src/internal/schema/representation.ts +0 -795
- package/src/internal/version.ts +0 -2
- package/src/unstable/http/Multipasta/HeadersParser.ts +0 -14
- package/src/unstable/http/Multipasta/Node.ts +0 -14
- package/src/unstable/http/Multipasta/Search.ts +0 -14
- package/src/unstable/http/Multipasta/Web.ts +0 -14
- package/src/unstable/http/Multipasta.ts +0 -15
package/dist/SchemaAST.js
CHANGED
|
@@ -15,12 +15,12 @@ import * as Cause from "./Cause.js";
|
|
|
15
15
|
import * as Effect from "./Effect.js";
|
|
16
16
|
import * as Exit from "./Exit.js";
|
|
17
17
|
import { format, formatPropertyKey } from "./Formatter.js";
|
|
18
|
-
import { memoize } from "./Function.js";
|
|
18
|
+
import { identity, memoize, memoizeIdempotent } from "./Function.js";
|
|
19
19
|
import { effectIsExit, iterateEager } from "./internal/effect.js";
|
|
20
|
-
import * as
|
|
20
|
+
import * as InternalRecord from "./internal/record.js";
|
|
21
21
|
import * as InternalAnnotations from "./internal/schema/annotations.js";
|
|
22
22
|
import * as InternalSchemaCause from "./internal/schema/cause.js";
|
|
23
|
-
import * as
|
|
23
|
+
import * as InternalParser from "./internal/schema/parser.js";
|
|
24
24
|
import * as Pipeable from "./Pipeable.js";
|
|
25
25
|
import * as Predicate from "./Predicate.js";
|
|
26
26
|
import * as Result from "./Result.js";
|
|
@@ -350,7 +350,7 @@ export const defaultParseOptions = {};
|
|
|
350
350
|
*
|
|
351
351
|
* - `isOptional` — the property key may be absent from the input.
|
|
352
352
|
* - `isMutable` — the property is `readonly` when `false`.
|
|
353
|
-
* - `
|
|
353
|
+
* - `constructorDefault` — a {@link Link} applied during construction to
|
|
354
354
|
* supply missing values.
|
|
355
355
|
* - `annotations` — key-level annotations (e.g. description of the key
|
|
356
356
|
* itself).
|
|
@@ -364,13 +364,13 @@ export class Context {
|
|
|
364
364
|
isOptional;
|
|
365
365
|
isMutable;
|
|
366
366
|
/** Used for constructor default values (e.g. `withConstructorDefault` API) */
|
|
367
|
-
|
|
367
|
+
constructorDefault;
|
|
368
368
|
annotations;
|
|
369
369
|
constructor(isOptional, isMutable, /** Used for constructor default values (e.g. `withConstructorDefault` API) */
|
|
370
|
-
|
|
370
|
+
constructorDefault = undefined, annotations = undefined) {
|
|
371
371
|
this.isOptional = isOptional;
|
|
372
372
|
this.isMutable = isMutable;
|
|
373
|
-
this.
|
|
373
|
+
this.constructorDefault = constructorDefault;
|
|
374
374
|
this.annotations = annotations;
|
|
375
375
|
}
|
|
376
376
|
}
|
|
@@ -443,10 +443,10 @@ export class Declaration extends Base {
|
|
|
443
443
|
}
|
|
444
444
|
/** @internal */
|
|
445
445
|
getParser() {
|
|
446
|
-
|
|
447
|
-
return (
|
|
448
|
-
if (
|
|
449
|
-
return
|
|
446
|
+
let run;
|
|
447
|
+
return (input, options) => {
|
|
448
|
+
if (input === InternalParser.missing) return InternalParser.missingExit;
|
|
449
|
+
return (run ??= this.run(this.typeParameters))(input, this, options);
|
|
450
450
|
};
|
|
451
451
|
}
|
|
452
452
|
_rebuild(recur, checks, encodingChecks) {
|
|
@@ -571,7 +571,8 @@ export class Void extends Base {
|
|
|
571
571
|
_tag = "Void";
|
|
572
572
|
/** @internal */
|
|
573
573
|
getParser() {
|
|
574
|
-
|
|
574
|
+
const succeed = InternalParser.succeed(undefined);
|
|
575
|
+
return input => input === InternalParser.missing ? InternalParser.missingExit : succeed;
|
|
575
576
|
}
|
|
576
577
|
/** @internal */
|
|
577
578
|
toCodecJson() {
|
|
@@ -797,9 +798,9 @@ function isTemplateLiteralPart(ast) {
|
|
|
797
798
|
return true;
|
|
798
799
|
case "Literal":
|
|
799
800
|
case "TemplateLiteral":
|
|
800
|
-
return ast.checks
|
|
801
|
+
return !ast.checks;
|
|
801
802
|
case "Union":
|
|
802
|
-
return ast.checks
|
|
803
|
+
return !ast.checks && ast.types.every(isTemplateLiteralPart);
|
|
803
804
|
default:
|
|
804
805
|
return false;
|
|
805
806
|
}
|
|
@@ -822,27 +823,47 @@ export class TemplateLiteral extends Base {
|
|
|
822
823
|
parts;
|
|
823
824
|
/** @internal */
|
|
824
825
|
encodedParts;
|
|
826
|
+
/** @internal */
|
|
827
|
+
literals;
|
|
828
|
+
/** @internal */
|
|
829
|
+
suffixLengths;
|
|
825
830
|
constructor(parts, annotations, checks, encoding, context) {
|
|
826
831
|
super(annotations, checks, encoding, context);
|
|
827
832
|
const encodedParts = [];
|
|
833
|
+
const literals = [];
|
|
828
834
|
for (const part of parts) {
|
|
829
835
|
const encoded = toEncoded(part);
|
|
830
836
|
if (isTemplateLiteralPart(encoded)) {
|
|
831
837
|
encodedParts.push(encoded);
|
|
838
|
+
literals.push(encoded._tag === "Literal" ? globalThis.String(encoded.literal) : undefined);
|
|
832
839
|
} else {
|
|
833
840
|
throw new Error(`Invalid TemplateLiteral part ${encoded._tag}`);
|
|
834
841
|
}
|
|
835
842
|
}
|
|
843
|
+
const suffixLengths = new Array(encodedParts.length + 1);
|
|
844
|
+
suffixLengths[encodedParts.length] = 0;
|
|
845
|
+
for (let i = encodedParts.length - 1; i >= 0; i--) {
|
|
846
|
+
suffixLengths[i] = suffixLengths[i + 1] + (literals[i]?.length ?? 0);
|
|
847
|
+
}
|
|
836
848
|
this.parts = parts;
|
|
837
849
|
this.encodedParts = encodedParts;
|
|
850
|
+
this.literals = literals;
|
|
851
|
+
this.suffixLengths = suffixLengths;
|
|
838
852
|
}
|
|
839
853
|
/** @internal */
|
|
840
|
-
getParser(
|
|
841
|
-
const parser =
|
|
842
|
-
return (
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
854
|
+
getParser(compile) {
|
|
855
|
+
const parser = compile(this.asTemplateLiteralParser());
|
|
856
|
+
return (input, options) => {
|
|
857
|
+
if (input === InternalParser.missing) return InternalParser.missingExit;
|
|
858
|
+
const result = parser(input, options);
|
|
859
|
+
if (result._tag === "Success") {
|
|
860
|
+
return InternalParser.sameExit;
|
|
861
|
+
}
|
|
862
|
+
return Effect.mapBothEager(result, {
|
|
863
|
+
onSuccess: () => input,
|
|
864
|
+
onFailure: issue => new SchemaIssue.Composite(this, [issue], input, options)
|
|
865
|
+
});
|
|
866
|
+
};
|
|
846
867
|
}
|
|
847
868
|
/** @internal */
|
|
848
869
|
getExpected() {
|
|
@@ -850,17 +871,17 @@ export class TemplateLiteral extends Base {
|
|
|
850
871
|
}
|
|
851
872
|
/** @internal */
|
|
852
873
|
matchPart(s, options) {
|
|
853
|
-
return segmentTemplateLiteralParts(this
|
|
874
|
+
return segmentTemplateLiteralParts(this, s, options) === undefined ? undefined : s;
|
|
854
875
|
}
|
|
855
876
|
/** @internal */
|
|
856
877
|
asTemplateLiteralParser() {
|
|
857
878
|
const tuple = new Arrays(false, this.parts.map(partFromString), []);
|
|
858
879
|
return decodeTo(string, tuple, new SchemaTransformation.Transformation(SchemaGetter.transformOrFail((s, options) => {
|
|
859
|
-
const segments = segmentTemplateLiteralParts(this
|
|
860
|
-
if (segments
|
|
861
|
-
return Effect.fail(new SchemaIssue.InvalidValue(
|
|
862
|
-
|
|
863
|
-
}));
|
|
880
|
+
const segments = segmentTemplateLiteralParts(this, s, options);
|
|
881
|
+
if (segments) return Effect.succeed(segments);
|
|
882
|
+
return Effect.fail(new SchemaIssue.InvalidValue({
|
|
883
|
+
expected: "a string matching template literal parts"
|
|
884
|
+
}, s, options));
|
|
864
885
|
}), SchemaGetter.transform(parts => parts.join(""))));
|
|
865
886
|
}
|
|
866
887
|
}
|
|
@@ -908,11 +929,11 @@ export class UniqueSymbol extends Base {
|
|
|
908
929
|
*
|
|
909
930
|
* **Example** (Creating a literal AST)
|
|
910
931
|
*
|
|
911
|
-
* ```ts
|
|
932
|
+
* ```ts import.meta.vitest
|
|
912
933
|
* import { SchemaAST } from "effect"
|
|
913
934
|
*
|
|
914
935
|
* const ast = new SchemaAST.Literal("active")
|
|
915
|
-
*
|
|
936
|
+
* ast.literal // => "active"
|
|
916
937
|
* ```
|
|
917
938
|
*
|
|
918
939
|
* @see {@link LiteralValue}
|
|
@@ -972,7 +993,8 @@ export class String extends Base {
|
|
|
972
993
|
}
|
|
973
994
|
/** @internal */
|
|
974
995
|
matchPart(s, options) {
|
|
975
|
-
|
|
996
|
+
const checks = this.checks;
|
|
997
|
+
return checks && !options.disableChecks && collectIssues(checks, s, undefined, this, options) ? undefined : s;
|
|
976
998
|
}
|
|
977
999
|
/** @internal */
|
|
978
1000
|
getExpected() {
|
|
@@ -1027,18 +1049,21 @@ export class Number extends Base {
|
|
|
1027
1049
|
return this._match(isStringFiniteRegExp, s, options);
|
|
1028
1050
|
}
|
|
1029
1051
|
_match(regexp, s, options) {
|
|
1030
|
-
|
|
1052
|
+
if (!regexp.test(s)) return undefined;
|
|
1053
|
+
const value = globalThis.Number(s);
|
|
1054
|
+
if (options.disableChecks || !this.checks) return value;
|
|
1055
|
+
return collectIssues(this.checks, value, undefined, this, options) ? undefined : value;
|
|
1031
1056
|
}
|
|
1032
1057
|
/** @internal */
|
|
1033
1058
|
toCodecJson() {
|
|
1034
|
-
if (this.checks && (hasCheck(this.checks, "isFinite") || hasCheck(this.checks, "isInt"))) {
|
|
1059
|
+
if (this.checks && (hasCheck(this.checks, "effect/schema/isFinite") || hasCheck(this.checks, "effect/schema/isInt"))) {
|
|
1035
1060
|
return this;
|
|
1036
1061
|
}
|
|
1037
|
-
return replaceEncoding(this, [numberToJson]);
|
|
1062
|
+
return replaceEncoding(this, [numberToJson(this.checks)]);
|
|
1038
1063
|
}
|
|
1039
1064
|
/** @internal */
|
|
1040
1065
|
toCodecStringTree() {
|
|
1041
|
-
if (this.
|
|
1066
|
+
if (this.toCodecJson() === this) {
|
|
1042
1067
|
return replaceEncoding(this, [finiteToString]);
|
|
1043
1068
|
}
|
|
1044
1069
|
return replaceEncoding(this, [numberToString]);
|
|
@@ -1048,16 +1073,12 @@ export class Number extends Base {
|
|
|
1048
1073
|
return "number";
|
|
1049
1074
|
}
|
|
1050
1075
|
}
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
case "FilterGroup":
|
|
1058
|
-
return hasCheck(c.checks, tag);
|
|
1059
|
-
}
|
|
1060
|
-
});
|
|
1076
|
+
function hasCheck(checks, id) {
|
|
1077
|
+
return checks.some(check => check.annotations?.representation?.id === id || check._tag === "FilterGroup" && hasCheck(check.checks, id));
|
|
1078
|
+
}
|
|
1079
|
+
function numberToJson(checks) {
|
|
1080
|
+
const encodedFinite = !checks ? finite : appendChecks(finite, checks);
|
|
1081
|
+
return new Link(new Union([encodedFinite, nonFiniteLiterals], "anyOf"), new SchemaTransformation.Transformation(SchemaGetter.Number(), SchemaGetter.transform(n => globalThis.Number.isFinite(n) ? n : globalThis.String(n))));
|
|
1061
1082
|
}
|
|
1062
1083
|
/**
|
|
1063
1084
|
* Provides the singleton {@link Number} AST instance.
|
|
@@ -1135,7 +1156,8 @@ export class Symbol extends Base {
|
|
|
1135
1156
|
}
|
|
1136
1157
|
/** @internal */
|
|
1137
1158
|
matchKey(s, options) {
|
|
1138
|
-
|
|
1159
|
+
if (options.disableChecks || !this.checks) return s;
|
|
1160
|
+
return collectIssues(this.checks, s, undefined, this, options) ? undefined : s;
|
|
1139
1161
|
}
|
|
1140
1162
|
/** @internal */
|
|
1141
1163
|
toCodecStringTree() {
|
|
@@ -1186,7 +1208,10 @@ export class BigInt extends Base {
|
|
|
1186
1208
|
}
|
|
1187
1209
|
/** @internal */
|
|
1188
1210
|
matchPart(s, options) {
|
|
1189
|
-
|
|
1211
|
+
if (!isStringBigIntRegExp.test(s)) return undefined;
|
|
1212
|
+
const value = globalThis.BigInt(s);
|
|
1213
|
+
if (options.disableChecks || !this.checks) return value;
|
|
1214
|
+
return collectIssues(this.checks, value, undefined, this, options) ? undefined : value;
|
|
1190
1215
|
}
|
|
1191
1216
|
/** @internal */
|
|
1192
1217
|
toCodecStringTree() {
|
|
@@ -1238,15 +1263,14 @@ export const bigInt = /*#__PURE__*/new BigInt();
|
|
|
1238
1263
|
*
|
|
1239
1264
|
* **Example** (Inspecting a tuple AST)
|
|
1240
1265
|
*
|
|
1241
|
-
* ```ts
|
|
1266
|
+
* ```ts import.meta.vitest
|
|
1242
1267
|
* import { Schema, SchemaAST } from "effect"
|
|
1243
1268
|
*
|
|
1244
1269
|
* const schema = Schema.Tuple([Schema.String, Schema.Number])
|
|
1245
1270
|
* const ast = schema.ast
|
|
1246
1271
|
*
|
|
1247
1272
|
* if (SchemaAST.isArrays(ast)) {
|
|
1248
|
-
*
|
|
1249
|
-
* console.log(ast.rest.length) // 0
|
|
1273
|
+
* [ast.elements.length, ast.rest.length] // => [2, 0]
|
|
1250
1274
|
* }
|
|
1251
1275
|
* ```
|
|
1252
1276
|
*
|
|
@@ -1267,55 +1291,65 @@ export class Arrays extends Base {
|
|
|
1267
1291
|
this.elements = elements;
|
|
1268
1292
|
this.rest = rest;
|
|
1269
1293
|
this.encodingChecks = encodingChecks;
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1294
|
+
let hasOptional = false;
|
|
1295
|
+
for (let i = 0; i < elements.length; i++) {
|
|
1296
|
+
if (isOptional(elements[i])) {
|
|
1297
|
+
hasOptional = true;
|
|
1298
|
+
} else if (hasOptional) {
|
|
1299
|
+
throw new Error("A required element cannot follow an optional element. ts(1257)");
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
if (hasOptional && rest.length > 1) {
|
|
1273
1303
|
throw new Error("A required element cannot follow an optional element. ts(1257)");
|
|
1274
1304
|
}
|
|
1275
1305
|
// An optional element cannot follow a rest element.ts(1266)
|
|
1276
|
-
|
|
1277
|
-
|
|
1306
|
+
for (let i = 1; i < rest.length; i++) {
|
|
1307
|
+
if (isOptional(rest[i])) {
|
|
1308
|
+
throw new Error("An optional element cannot follow a rest element. ts(1266)");
|
|
1309
|
+
}
|
|
1278
1310
|
}
|
|
1279
1311
|
}
|
|
1280
1312
|
/** @internal */
|
|
1281
|
-
getParser(
|
|
1313
|
+
getParser(compile, compileConstructorDefault = compile) {
|
|
1282
1314
|
// oxlint-disable-next-line @typescript-eslint/no-this-alias
|
|
1283
1315
|
const ast = this;
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
const rest = ast.rest.map(ast => ({
|
|
1289
|
-
ast,
|
|
1290
|
-
parser: recur(ast)
|
|
1291
|
-
}));
|
|
1292
|
-
const elementLen = elements.length;
|
|
1293
|
-
const [head, ...tail] = rest;
|
|
1294
|
-
const tailLen = tail.length;
|
|
1316
|
+
let elements;
|
|
1317
|
+
let rest;
|
|
1318
|
+
const elementLen = ast.elements.length;
|
|
1319
|
+
const tailLen = Math.max(0, ast.rest.length - 1);
|
|
1295
1320
|
function getParser(tailThreshold, index) {
|
|
1296
1321
|
if (index < elementLen) {
|
|
1297
1322
|
return elements[index];
|
|
1298
1323
|
} else if (index >= tailThreshold) {
|
|
1299
|
-
return
|
|
1324
|
+
return rest[index - tailThreshold + 1];
|
|
1300
1325
|
}
|
|
1301
|
-
return
|
|
1326
|
+
return rest[0];
|
|
1302
1327
|
}
|
|
1303
|
-
return Effect.fnUntracedEager(function* (
|
|
1304
|
-
if (
|
|
1305
|
-
return
|
|
1328
|
+
return Effect.fnUntracedEager(function* (input, options) {
|
|
1329
|
+
if (input === InternalParser.missing) {
|
|
1330
|
+
return InternalParser.missing;
|
|
1306
1331
|
}
|
|
1307
|
-
const input = oinput.value;
|
|
1308
1332
|
// If the input is not an array, return early with an error
|
|
1309
1333
|
if (!Array.isArray(input)) {
|
|
1310
|
-
return yield* Effect.fail(new SchemaIssue.InvalidType(ast,
|
|
1334
|
+
return yield* Effect.fail(new SchemaIssue.InvalidType(ast, input, options));
|
|
1335
|
+
}
|
|
1336
|
+
if (!elements) {
|
|
1337
|
+
elements = ast.elements.map(ast => ({
|
|
1338
|
+
ast,
|
|
1339
|
+
parser: compileConstructorDefault(ast)
|
|
1340
|
+
}));
|
|
1341
|
+
rest = ast.rest.map(ast => ({
|
|
1342
|
+
ast,
|
|
1343
|
+
parser: compileConstructorDefault(ast)
|
|
1344
|
+
}));
|
|
1311
1345
|
}
|
|
1312
1346
|
const len = input.length;
|
|
1313
1347
|
const state = {
|
|
1314
1348
|
ast,
|
|
1315
1349
|
getParser,
|
|
1316
|
-
|
|
1350
|
+
input,
|
|
1317
1351
|
len,
|
|
1318
|
-
tailThreshold:
|
|
1352
|
+
tailThreshold: Math.max(elementLen, len - tailLen),
|
|
1319
1353
|
output: new globalThis.Array(len),
|
|
1320
1354
|
issues: undefined,
|
|
1321
1355
|
options
|
|
@@ -1331,18 +1365,19 @@ export class Arrays extends Base {
|
|
|
1331
1365
|
// ---------------------------------------------
|
|
1332
1366
|
if (ast.rest.length === 0 && len > elementLen) {
|
|
1333
1367
|
for (let i = elementLen; i <= len - 1; i++) {
|
|
1334
|
-
const
|
|
1368
|
+
const unexpected = new SchemaIssue.UnexpectedKey(ast, input[i], options);
|
|
1369
|
+
const issue = new SchemaIssue.Pointer([i], unexpected);
|
|
1335
1370
|
if (options.errors === "all") {
|
|
1336
1371
|
if (state.issues) state.issues.push(issue);else state.issues = [issue];
|
|
1337
1372
|
} else {
|
|
1338
|
-
return yield* Effect.fail(new SchemaIssue.Composite(ast,
|
|
1373
|
+
return yield* Effect.fail(new SchemaIssue.Composite(ast, [issue], input, options));
|
|
1339
1374
|
}
|
|
1340
1375
|
}
|
|
1341
1376
|
}
|
|
1342
1377
|
if (state.issues) {
|
|
1343
|
-
return yield* Effect.fail(new SchemaIssue.Composite(ast,
|
|
1378
|
+
return yield* Effect.fail(new SchemaIssue.Composite(ast, state.issues, input, options));
|
|
1344
1379
|
}
|
|
1345
|
-
return
|
|
1380
|
+
return state.output;
|
|
1346
1381
|
});
|
|
1347
1382
|
}
|
|
1348
1383
|
_rebuild(recur, checks, encodingChecks) {
|
|
@@ -1365,14 +1400,16 @@ export class Arrays extends Base {
|
|
|
1365
1400
|
}
|
|
1366
1401
|
const parseArray = /*#__PURE__*/iterateEager()({
|
|
1367
1402
|
onItem(s, item, i) {
|
|
1368
|
-
const value = i < s.len ?
|
|
1403
|
+
const value = i < s.len ? item : InternalParser.missing;
|
|
1369
1404
|
return s.getParser(s.tailThreshold, i).parser(value, s.options);
|
|
1370
1405
|
},
|
|
1371
|
-
step(s,
|
|
1406
|
+
step(s, item, exit, i) {
|
|
1372
1407
|
if (exit._tag === "Failure") {
|
|
1373
1408
|
return wrapPropertyKeyIssue(s, s.ast, i, exit);
|
|
1374
|
-
}
|
|
1375
|
-
|
|
1409
|
+
}
|
|
1410
|
+
const value = exit === InternalParser.sameExit ? item : exit[InternalParser.args];
|
|
1411
|
+
if (value !== InternalParser.missing) {
|
|
1412
|
+
s.output[i] = value;
|
|
1376
1413
|
} else {
|
|
1377
1414
|
const p = s.getParser(s.tailThreshold, i);
|
|
1378
1415
|
if (isOptional(p.ast)) return;
|
|
@@ -1380,14 +1417,11 @@ const parseArray = /*#__PURE__*/iterateEager()({
|
|
|
1380
1417
|
if (s.options.errors === "all") {
|
|
1381
1418
|
if (s.issues) s.issues.push(issue);else s.issues = [issue];
|
|
1382
1419
|
} else {
|
|
1383
|
-
return Exit.fail(new SchemaIssue.Composite(s.ast, s.
|
|
1420
|
+
return Exit.fail(new SchemaIssue.Composite(s.ast, [issue], s.input, s.options));
|
|
1384
1421
|
}
|
|
1385
1422
|
}
|
|
1386
1423
|
}
|
|
1387
1424
|
});
|
|
1388
|
-
function resolveTailThreshold(inputLen, elementLen, tailLen) {
|
|
1389
|
-
return Math.max(elementLen, inputLen - tailLen);
|
|
1390
|
-
}
|
|
1391
1425
|
const resolveConcurrency = value => {
|
|
1392
1426
|
value = value === "unbounded" ? Infinity : value ?? 1;
|
|
1393
1427
|
return value > 1 ? {
|
|
@@ -1400,13 +1434,13 @@ const wrapPropertyKeyIssue = (s, ast, key, exit) => {
|
|
|
1400
1434
|
}
|
|
1401
1435
|
const issue = InternalSchemaCause.getSchemaIssue(exit.cause);
|
|
1402
1436
|
if (issue === undefined) {
|
|
1403
|
-
return Exit.failCause(Cause.map(exit.cause, issue => new SchemaIssue.Composite(ast,
|
|
1437
|
+
return Exit.failCause(Cause.map(exit.cause, issue => new SchemaIssue.Composite(ast, [new SchemaIssue.Pointer([key], issue)], s.input, s.options)));
|
|
1404
1438
|
}
|
|
1405
1439
|
const pointer = new SchemaIssue.Pointer([key], issue);
|
|
1406
1440
|
if (s.options.errors === "all") {
|
|
1407
1441
|
if (s.issues) s.issues.push(pointer);else s.issues = [pointer];
|
|
1408
1442
|
} else {
|
|
1409
|
-
return Exit.fail(new SchemaIssue.Composite(ast, s.
|
|
1443
|
+
return Exit.fail(new SchemaIssue.Composite(ast, [pointer], s.input, s.options));
|
|
1410
1444
|
}
|
|
1411
1445
|
};
|
|
1412
1446
|
/**
|
|
@@ -1459,32 +1493,6 @@ export class PropertySignature {
|
|
|
1459
1493
|
this.type = type;
|
|
1460
1494
|
}
|
|
1461
1495
|
}
|
|
1462
|
-
/**
|
|
1463
|
-
* Represents a bidirectional merge strategy for index signature key-value pairs.
|
|
1464
|
-
*
|
|
1465
|
-
* **Details**
|
|
1466
|
-
*
|
|
1467
|
-
* Used by {@link IndexSignature} when the same key appears multiple times
|
|
1468
|
-
* (e.g. from `Schema.extend` or overlapping records). Provides separate
|
|
1469
|
-
* `decode` and `encode` combiners that determine how duplicate entries are
|
|
1470
|
-
* merged.
|
|
1471
|
-
*
|
|
1472
|
-
* @see {@link IndexSignature}
|
|
1473
|
-
* @category models
|
|
1474
|
-
* @since 4.0.0
|
|
1475
|
-
*/
|
|
1476
|
-
export class KeyValueCombiner {
|
|
1477
|
-
decode;
|
|
1478
|
-
encode;
|
|
1479
|
-
constructor(decode, encode) {
|
|
1480
|
-
this.decode = decode;
|
|
1481
|
-
this.encode = encode;
|
|
1482
|
-
}
|
|
1483
|
-
/** @internal */
|
|
1484
|
-
flip() {
|
|
1485
|
-
return new KeyValueCombiner(this.encode, this.decode);
|
|
1486
|
-
}
|
|
1487
|
-
}
|
|
1488
1496
|
function isIndexSignatureParameterSide(ast) {
|
|
1489
1497
|
switch (ast._tag) {
|
|
1490
1498
|
case "String":
|
|
@@ -1514,7 +1522,6 @@ function isIndexSignatureParameter(ast) {
|
|
|
1514
1522
|
* - `parameter` — the key type AST (e.g. {@link String} for `string` keys,
|
|
1515
1523
|
* {@link TemplateLiteral} for patterned keys).
|
|
1516
1524
|
* - `type` — the value type SchemaAST.
|
|
1517
|
-
* - `merge` — optional {@link KeyValueCombiner} for handling duplicate keys.
|
|
1518
1525
|
*
|
|
1519
1526
|
* **Gotchas**
|
|
1520
1527
|
*
|
|
@@ -1529,14 +1536,12 @@ function isIndexSignatureParameter(ast) {
|
|
|
1529
1536
|
export class IndexSignature {
|
|
1530
1537
|
parameter;
|
|
1531
1538
|
type;
|
|
1532
|
-
|
|
1533
|
-
constructor(parameter, type, merge) {
|
|
1539
|
+
constructor(parameter, type) {
|
|
1534
1540
|
if (!isIndexSignatureParameter(parameter)) {
|
|
1535
1541
|
throw new Error(`Invalid index signature parameter ${parameter._tag}`);
|
|
1536
1542
|
}
|
|
1537
1543
|
this.parameter = parameter;
|
|
1538
1544
|
this.type = type;
|
|
1539
|
-
this.merge = merge;
|
|
1540
1545
|
if (isOptional(type) && !containsUndefined(type)) {
|
|
1541
1546
|
throw new Error("Cannot use `Schema.optionalKey` with index signatures, use `Schema.optional` instead.");
|
|
1542
1547
|
}
|
|
@@ -1566,17 +1571,14 @@ export class IndexSignature {
|
|
|
1566
1571
|
*
|
|
1567
1572
|
* **Example** (Inspecting a struct AST)
|
|
1568
1573
|
*
|
|
1569
|
-
* ```ts
|
|
1574
|
+
* ```ts import.meta.vitest
|
|
1570
1575
|
* import { Schema, SchemaAST } from "effect"
|
|
1571
1576
|
*
|
|
1572
1577
|
* const schema = Schema.Struct({ name: Schema.String })
|
|
1573
1578
|
* const ast = schema.ast
|
|
1574
1579
|
*
|
|
1575
1580
|
* if (SchemaAST.isObjects(ast)) {
|
|
1576
|
-
*
|
|
1577
|
-
* console.log(ps.name, ps.type._tag)
|
|
1578
|
-
* }
|
|
1579
|
-
* // "name" "String"
|
|
1581
|
+
* ast.propertySignatures.map((ps) => [ps.name, ps.type._tag]) // => [["name", "String"]]
|
|
1580
1582
|
* }
|
|
1581
1583
|
* ```
|
|
1582
1584
|
*
|
|
@@ -1604,77 +1606,85 @@ export class Objects extends Base {
|
|
|
1604
1606
|
}
|
|
1605
1607
|
}
|
|
1606
1608
|
/** @internal */
|
|
1607
|
-
getParser(
|
|
1609
|
+
getParser(compile, compileConstructorDefault = compile) {
|
|
1608
1610
|
// oxlint-disable-next-line @typescript-eslint/no-this-alias
|
|
1609
1611
|
const ast = this;
|
|
1610
1612
|
const expectedKeys = [];
|
|
1611
|
-
const expectedKeysSet = new Set();
|
|
1612
|
-
const properties = [];
|
|
1613
1613
|
for (const ps of ast.propertySignatures) {
|
|
1614
1614
|
expectedKeys.push(ps.name);
|
|
1615
|
-
expectedKeysSet.add(ps.name);
|
|
1616
|
-
properties.push({
|
|
1617
|
-
ps,
|
|
1618
|
-
parser: recur(ps.type),
|
|
1619
|
-
name: ps.name,
|
|
1620
|
-
type: ps.type
|
|
1621
|
-
});
|
|
1622
1615
|
}
|
|
1616
|
+
const hasProperties = expectedKeys.length;
|
|
1623
1617
|
const indexCount = ast.indexSignatures.length;
|
|
1618
|
+
let expectedKeysSet = hasProperties && indexCount ? new Set(expectedKeys) : undefined;
|
|
1624
1619
|
// ---------------------------------------------
|
|
1625
1620
|
// handle empty struct
|
|
1626
1621
|
// ---------------------------------------------
|
|
1627
|
-
if (
|
|
1622
|
+
if (!hasProperties && !indexCount) {
|
|
1628
1623
|
return fromRefinement(ast, Predicate.isNotNullish);
|
|
1629
1624
|
}
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
return;
|
|
1648
|
-
} else if (exitKey.value._tag === "Some" && exitValue.value._tag === "Some") {
|
|
1649
|
-
const k2 = exitKey.value.value;
|
|
1650
|
-
if (expectedKeysSet.has(key) || expectedKeysSet.has(k2)) {
|
|
1651
|
-
return;
|
|
1652
|
-
}
|
|
1653
|
-
const v2 = exitValue.value.value;
|
|
1654
|
-
if (is.merge && is.merge.decode && Object.hasOwn(s.out, k2)) {
|
|
1655
|
-
const [k, v] = is.merge.decode.combine([k2, s.out[k2]], [k2, v2]);
|
|
1656
|
-
internalRecord.set(s.out, k, v);
|
|
1657
|
-
} else {
|
|
1658
|
-
internalRecord.set(s.out, k2, v2);
|
|
1659
|
-
}
|
|
1625
|
+
let properties;
|
|
1626
|
+
let indexes;
|
|
1627
|
+
const finishIndex = (s, key, k2, inputValue, exitValue) => {
|
|
1628
|
+
if (exitValue._tag === "Failure") {
|
|
1629
|
+
return wrapPropertyKeyIssue(s, ast, key, exitValue) ?? Exit.void;
|
|
1630
|
+
}
|
|
1631
|
+
const value = exitValue === InternalParser.sameExit ? inputValue : exitValue[InternalParser.args];
|
|
1632
|
+
if (k2 !== InternalParser.missing && value !== InternalParser.missing) {
|
|
1633
|
+
if (hasProperties && (expectedKeysSet.has(key) || expectedKeysSet.has(k2))) return Exit.void;
|
|
1634
|
+
InternalRecord.assignProperty(s.out, k2, value);
|
|
1635
|
+
}
|
|
1636
|
+
return Exit.void;
|
|
1637
|
+
};
|
|
1638
|
+
const parseIndex = (s, key, index, exitKey) => {
|
|
1639
|
+
if (!exitKey) {
|
|
1640
|
+
const eff = index.parserKey(key, s.options);
|
|
1641
|
+
if (!effectIsExit(eff)) {
|
|
1642
|
+
return Effect.flatMap(Effect.exit(eff), exit => parseIndex(s, key, index, exit));
|
|
1660
1643
|
}
|
|
1661
|
-
|
|
1644
|
+
exitKey = eff;
|
|
1645
|
+
}
|
|
1646
|
+
if (exitKey._tag === "Failure") {
|
|
1647
|
+
return wrapPropertyKeyIssue(s, ast, key, exitKey) ?? Exit.void;
|
|
1648
|
+
}
|
|
1649
|
+
const k2 = exitKey === InternalParser.sameExit ? key : exitKey[InternalParser.args];
|
|
1650
|
+
const inputValue = s.input[key];
|
|
1651
|
+
const result = index.parserValue(inputValue, s.options);
|
|
1652
|
+
return effectIsExit(result) ? finishIndex(s, key, k2, inputValue, result) : Effect.flatMap(Effect.exit(result), exit => finishIndex(s, key, k2, inputValue, exit));
|
|
1653
|
+
};
|
|
1654
|
+
const parseStringIndex = (s, key, index) => {
|
|
1655
|
+
const inputValue = s.input[key];
|
|
1656
|
+
const result = index.parserValue(inputValue, s.options);
|
|
1657
|
+
return effectIsExit(result) ? finishIndex(s, key, key, inputValue, result) : Effect.flatMap(Effect.exit(result), exit => finishIndex(s, key, key, inputValue, exit));
|
|
1658
|
+
};
|
|
1659
|
+
const parseIndexes = indexCount ? iterateEager()({
|
|
1660
|
+
onItem: (s, [key, index]) => parseIndex(s, key, index),
|
|
1662
1661
|
step: (_s, _, exit) => exit._tag === "Failure" ? exit : undefined
|
|
1663
1662
|
}) : undefined;
|
|
1664
|
-
return Effect.fnUntracedEager(function* (
|
|
1665
|
-
if (
|
|
1666
|
-
return
|
|
1663
|
+
return Effect.fnUntracedEager(function* (input, options) {
|
|
1664
|
+
if (input === InternalParser.missing) {
|
|
1665
|
+
return InternalParser.missing;
|
|
1667
1666
|
}
|
|
1668
|
-
const input = oinput.value;
|
|
1669
1667
|
// If the input is not a record, return early with an error
|
|
1670
1668
|
if (!(typeof input === "object" && input !== null && !Array.isArray(input))) {
|
|
1671
|
-
return yield* Effect.fail(new SchemaIssue.InvalidType(ast,
|
|
1669
|
+
return yield* Effect.fail(new SchemaIssue.InvalidType(ast, input, options));
|
|
1670
|
+
}
|
|
1671
|
+
if (!properties) {
|
|
1672
|
+
properties = ast.propertySignatures.map(ps => ({
|
|
1673
|
+
parser: compileConstructorDefault(ps.type),
|
|
1674
|
+
name: ps.name,
|
|
1675
|
+
type: ps.type
|
|
1676
|
+
}));
|
|
1677
|
+
indexes = indexCount ? ast.indexSignatures.map(is => ({
|
|
1678
|
+
is,
|
|
1679
|
+
parserKey: compile(parameterFromPropertyKey(is.parameter)),
|
|
1680
|
+
parserValue: compileConstructorDefault(is.type)
|
|
1681
|
+
})) : undefined;
|
|
1672
1682
|
}
|
|
1683
|
+
const record = input;
|
|
1673
1684
|
const out = {};
|
|
1674
1685
|
const state = {
|
|
1675
1686
|
ast,
|
|
1676
|
-
|
|
1677
|
-
input,
|
|
1687
|
+
input: record,
|
|
1678
1688
|
out,
|
|
1679
1689
|
issues: undefined,
|
|
1680
1690
|
options
|
|
@@ -1686,14 +1696,16 @@ export class Objects extends Base {
|
|
|
1686
1696
|
// handle excess properties
|
|
1687
1697
|
// ---------------------------------------------
|
|
1688
1698
|
let inputKeys;
|
|
1689
|
-
if (
|
|
1690
|
-
|
|
1699
|
+
if (!indexCount && (onExcessPropertyError || onExcessPropertyPreserve)) {
|
|
1700
|
+
expectedKeysSet ??= new Set(expectedKeys);
|
|
1701
|
+
inputKeys = Reflect.ownKeys(record);
|
|
1691
1702
|
for (let i = 0; i < inputKeys.length; i++) {
|
|
1692
1703
|
const key = inputKeys[i];
|
|
1693
1704
|
if (!expectedKeysSet.has(key)) {
|
|
1694
1705
|
// key is unexpected
|
|
1695
1706
|
if (onExcessPropertyError) {
|
|
1696
|
-
const
|
|
1707
|
+
const unexpected = new SchemaIssue.UnexpectedKey(ast, record[key], options);
|
|
1708
|
+
const issue = new SchemaIssue.Pointer([key], unexpected);
|
|
1697
1709
|
if (errorsAllOption) {
|
|
1698
1710
|
if (state.issues) {
|
|
1699
1711
|
state.issues.push(issue);
|
|
@@ -1702,11 +1714,11 @@ export class Objects extends Base {
|
|
|
1702
1714
|
}
|
|
1703
1715
|
continue;
|
|
1704
1716
|
} else {
|
|
1705
|
-
return yield* Effect.fail(new SchemaIssue.Composite(ast,
|
|
1717
|
+
return yield* Effect.fail(new SchemaIssue.Composite(ast, [issue], input, options));
|
|
1706
1718
|
}
|
|
1707
1719
|
} else {
|
|
1708
1720
|
// preserve key
|
|
1709
|
-
|
|
1721
|
+
InternalRecord.assignProperty(out, key, record[key]);
|
|
1710
1722
|
}
|
|
1711
1723
|
}
|
|
1712
1724
|
}
|
|
@@ -1715,42 +1727,53 @@ export class Objects extends Base {
|
|
|
1715
1727
|
// ---------------------------------------------
|
|
1716
1728
|
// handle property signatures
|
|
1717
1729
|
// ---------------------------------------------
|
|
1718
|
-
|
|
1719
|
-
|
|
1730
|
+
if (hasProperties) {
|
|
1731
|
+
const eff = parseProperties(state, properties, concurrency);
|
|
1732
|
+
if (eff) yield* eff;
|
|
1733
|
+
}
|
|
1720
1734
|
// ---------------------------------------------
|
|
1721
1735
|
// handle index signatures
|
|
1722
1736
|
// ---------------------------------------------
|
|
1723
|
-
if (
|
|
1737
|
+
if (indexCount && !concurrency) {
|
|
1738
|
+
for (let i = 0; i < indexCount; i++) {
|
|
1739
|
+
const index = indexes[i];
|
|
1740
|
+
const parse = index.is.parameter === string ? parseStringIndex : parseIndex;
|
|
1741
|
+
const keys = index.is.parameter === string ? Object.keys(record) : getIndexSignatureKeys(record, index.is.parameter, options);
|
|
1742
|
+
for (let j = 0; j < keys.length; j++) {
|
|
1743
|
+
const eff = parse(state, keys[j], index);
|
|
1744
|
+
if (!effectIsExit(eff)) yield* eff;else if (eff._tag === "Failure") return yield* eff;
|
|
1745
|
+
}
|
|
1746
|
+
}
|
|
1747
|
+
} else if (parseIndexes) {
|
|
1724
1748
|
const keyPairs = Arr.empty();
|
|
1725
1749
|
for (let i = 0; i < indexCount; i++) {
|
|
1726
|
-
const
|
|
1727
|
-
const keys = getIndexSignatureKeys(
|
|
1750
|
+
const index = indexes[i];
|
|
1751
|
+
const keys = getIndexSignatureKeys(record, index.is.parameter, options);
|
|
1728
1752
|
for (let j = 0; j < keys.length; j++) {
|
|
1729
|
-
|
|
1730
|
-
keyPairs.push([key, is]);
|
|
1753
|
+
keyPairs.push([keys[j], index]);
|
|
1731
1754
|
}
|
|
1732
1755
|
}
|
|
1733
1756
|
const eff = parseIndexes(state, keyPairs, concurrency);
|
|
1734
1757
|
if (eff) yield* eff;
|
|
1735
1758
|
}
|
|
1736
1759
|
if (state.issues) {
|
|
1737
|
-
return yield* Effect.fail(new SchemaIssue.Composite(ast,
|
|
1760
|
+
return yield* Effect.fail(new SchemaIssue.Composite(ast, state.issues, input, options));
|
|
1738
1761
|
}
|
|
1739
1762
|
if (options.propertyOrder === "original") {
|
|
1740
1763
|
// preserve input keys order
|
|
1741
|
-
const keys = (inputKeys ?? Reflect.ownKeys(
|
|
1764
|
+
const keys = (inputKeys ?? Reflect.ownKeys(record)).concat(expectedKeys);
|
|
1742
1765
|
const preserved = {};
|
|
1743
1766
|
for (const key of keys) {
|
|
1744
1767
|
if (Object.hasOwn(out, key)) {
|
|
1745
|
-
|
|
1768
|
+
InternalRecord.assignProperty(preserved, key, out[key]);
|
|
1746
1769
|
}
|
|
1747
1770
|
}
|
|
1748
|
-
return
|
|
1771
|
+
return preserved;
|
|
1749
1772
|
}
|
|
1750
|
-
return
|
|
1773
|
+
return out;
|
|
1751
1774
|
});
|
|
1752
1775
|
}
|
|
1753
|
-
_rebuild(recur, recurParameter,
|
|
1776
|
+
_rebuild(recur, recurParameter, checks, encodingChecks) {
|
|
1754
1777
|
const props = mapOrSame(this.propertySignatures, ps => {
|
|
1755
1778
|
const t = recur(ps.type);
|
|
1756
1779
|
return t === ps.type ? ps : new PropertySignature(ps.name, t);
|
|
@@ -1758,18 +1781,17 @@ export class Objects extends Base {
|
|
|
1758
1781
|
const indexes = mapOrSame(this.indexSignatures, is => {
|
|
1759
1782
|
const p = recurParameter(is.parameter);
|
|
1760
1783
|
const t = recur(is.type);
|
|
1761
|
-
|
|
1762
|
-
return p === is.parameter && t === is.type && merge === is.merge ? is : new IndexSignature(p, t, merge);
|
|
1784
|
+
return p === is.parameter && t === is.type ? is : new IndexSignature(p, t);
|
|
1763
1785
|
});
|
|
1764
1786
|
return props === this.propertySignatures && indexes === this.indexSignatures && checks === this.checks && encodingChecks === this.encodingChecks ? this : new Objects(props, indexes, this.annotations, checks, undefined, this.context, encodingChecks);
|
|
1765
1787
|
}
|
|
1766
1788
|
/** @internal */
|
|
1767
1789
|
flip(recur) {
|
|
1768
|
-
return this._rebuild(recur, recur,
|
|
1790
|
+
return this._rebuild(recur, recur, this.encodingChecks, this.checks);
|
|
1769
1791
|
}
|
|
1770
1792
|
/** @internal */
|
|
1771
1793
|
recur(recur, recurParameter = recur) {
|
|
1772
|
-
return this._rebuild(recur, recurParameter,
|
|
1794
|
+
return this._rebuild(recur, recurParameter, this.checks, this.encodingChecks);
|
|
1773
1795
|
}
|
|
1774
1796
|
/** @internal */
|
|
1775
1797
|
getExpected() {
|
|
@@ -1779,21 +1801,31 @@ export class Objects extends Base {
|
|
|
1779
1801
|
}
|
|
1780
1802
|
const parseProperties = /*#__PURE__*/iterateEager()({
|
|
1781
1803
|
onItem(s, p) {
|
|
1782
|
-
|
|
1804
|
+
if (!Object.hasOwn(s.input, p.name)) {
|
|
1805
|
+
return p.parser(InternalParser.missing, s.options);
|
|
1806
|
+
}
|
|
1807
|
+
const value = s.input[p.name];
|
|
1808
|
+
InternalRecord.assignProperty(s.out, p.name, value);
|
|
1783
1809
|
return p.parser(value, s.options);
|
|
1784
1810
|
},
|
|
1785
1811
|
step(s, p, exit) {
|
|
1786
1812
|
if (exit._tag === "Failure") {
|
|
1787
1813
|
return wrapPropertyKeyIssue(s, s.ast, p.name, exit);
|
|
1788
|
-
}
|
|
1789
|
-
|
|
1790
|
-
|
|
1814
|
+
}
|
|
1815
|
+
if (exit === InternalParser.sameExit) return;
|
|
1816
|
+
const value = exit[InternalParser.args];
|
|
1817
|
+
if (value !== InternalParser.missing) {
|
|
1818
|
+
InternalRecord.assignProperty(s.out, p.name, value);
|
|
1819
|
+
return;
|
|
1820
|
+
}
|
|
1821
|
+
delete s.out[p.name];
|
|
1822
|
+
if (!isOptional(p.type)) {
|
|
1791
1823
|
const issue = new SchemaIssue.Pointer([p.name], new SchemaIssue.MissingKey(p.type.context?.annotations));
|
|
1792
1824
|
if (s.options.errors === "all") {
|
|
1793
1825
|
if (s.issues) s.issues.push(issue);else s.issues = [issue];
|
|
1794
1826
|
return;
|
|
1795
1827
|
} else {
|
|
1796
|
-
return Exit.fail(new SchemaIssue.Composite(s.ast, s.
|
|
1828
|
+
return Exit.fail(new SchemaIssue.Composite(s.ast, [issue], s.input, s.options));
|
|
1797
1829
|
}
|
|
1798
1830
|
}
|
|
1799
1831
|
}
|
|
@@ -1843,6 +1875,18 @@ export function tupleWithRest(ast, rest) {
|
|
|
1843
1875
|
}
|
|
1844
1876
|
return new Arrays(ast.isMutable, ast.elements, rest, undefined, ast.checks);
|
|
1845
1877
|
}
|
|
1878
|
+
const toCandidate = /*#__PURE__*/memoizeIdempotent(ast => {
|
|
1879
|
+
while (true) {
|
|
1880
|
+
if (isSuspend(ast)) return unknown;
|
|
1881
|
+
const encoding = ast.encoding;
|
|
1882
|
+
if (!encoding) {
|
|
1883
|
+
// Index signature parameters do not participate in union selection.
|
|
1884
|
+
return ast.recur?.(toCandidate, identity) ?? ast;
|
|
1885
|
+
}
|
|
1886
|
+
if (encoding.some(link => link.transformation._tag === "Middleware" && link.transformation.decode !== identity)) return unknown;
|
|
1887
|
+
ast = encoding[encoding.length - 1].to;
|
|
1888
|
+
}
|
|
1889
|
+
});
|
|
1846
1890
|
function getCandidateTypes(ast) {
|
|
1847
1891
|
switch (ast._tag) {
|
|
1848
1892
|
case "Null":
|
|
@@ -1866,7 +1910,7 @@ function getCandidateTypes(ast) {
|
|
|
1866
1910
|
case "ObjectKeyword":
|
|
1867
1911
|
return ["object", "array", "function"];
|
|
1868
1912
|
case "Objects":
|
|
1869
|
-
return ast.propertySignatures.length || ast.indexSignatures.length ? ["object"] : ["object", "array"];
|
|
1913
|
+
return ast.propertySignatures.length || ast.indexSignatures.length ? ["object"] : ["string", "number", "boolean", "symbol", "bigint", "object", "array", "function"];
|
|
1870
1914
|
case "Enum":
|
|
1871
1915
|
return Array.from(new Set(ast.enums.map(([, v]) => typeof v)));
|
|
1872
1916
|
case "Literal":
|
|
@@ -1884,7 +1928,7 @@ export function collectSentinels(ast) {
|
|
|
1884
1928
|
return [];
|
|
1885
1929
|
case "Declaration":
|
|
1886
1930
|
{
|
|
1887
|
-
const s = ast.annotations?.[
|
|
1931
|
+
const s = ast.annotations?.[InternalAnnotations.SENTINELS_ANNOTATION_KEY];
|
|
1888
1932
|
return Array.isArray(s) ? s : [];
|
|
1889
1933
|
}
|
|
1890
1934
|
case "Objects":
|
|
@@ -1908,54 +1952,169 @@ export function collectSentinels(ast) {
|
|
|
1908
1952
|
});
|
|
1909
1953
|
case "Arrays":
|
|
1910
1954
|
return ast.elements.flatMap((e, i) => {
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1955
|
+
if (!isOptional(e)) {
|
|
1956
|
+
if (isLiteral(e)) {
|
|
1957
|
+
return [{
|
|
1958
|
+
key: i,
|
|
1959
|
+
literal: e.literal
|
|
1960
|
+
}];
|
|
1961
|
+
}
|
|
1962
|
+
if (isUniqueSymbol(e)) {
|
|
1963
|
+
return [{
|
|
1964
|
+
key: i,
|
|
1965
|
+
literal: e.symbol
|
|
1966
|
+
}];
|
|
1967
|
+
}
|
|
1968
|
+
}
|
|
1969
|
+
return [];
|
|
1915
1970
|
});
|
|
1971
|
+
case "Union":
|
|
1972
|
+
{
|
|
1973
|
+
if (ast.types.length === 0) return [];
|
|
1974
|
+
const members = ast.types.map(type => collectSentinels(toCandidate(type)));
|
|
1975
|
+
return members[0].filter(s => members.every(sentinels => sentinels.some(o => o.key === s.key && o.literal === s.literal)));
|
|
1976
|
+
}
|
|
1916
1977
|
case "Suspend":
|
|
1917
1978
|
return collectSentinels(ast.thunk());
|
|
1918
1979
|
}
|
|
1919
1980
|
}
|
|
1920
1981
|
const candidateIndexCache = /*#__PURE__*/new WeakMap();
|
|
1982
|
+
const emptyCandidates = /*#__PURE__*/Object.freeze([]);
|
|
1921
1983
|
function getIndex(types) {
|
|
1922
|
-
let
|
|
1923
|
-
if (
|
|
1924
|
-
|
|
1984
|
+
let index = candidateIndexCache.get(types);
|
|
1985
|
+
if (index) return index;
|
|
1986
|
+
let bySentinel;
|
|
1987
|
+
let sentinelCandidateCount = 0;
|
|
1988
|
+
let otherwise;
|
|
1989
|
+
let literalCandidates;
|
|
1990
|
+
let onlyLiterals = true;
|
|
1925
1991
|
for (let i = 0; i < types.length; i++) {
|
|
1926
1992
|
const a = types[i];
|
|
1927
|
-
const encoded =
|
|
1993
|
+
const encoded = toCandidate(a);
|
|
1928
1994
|
if (isNever(encoded)) continue;
|
|
1929
|
-
|
|
1995
|
+
if (onlyLiterals) {
|
|
1996
|
+
if (isLiteral(encoded) || isUniqueSymbol(encoded)) {
|
|
1997
|
+
literalCandidates ??= new Map();
|
|
1998
|
+
const literal = isLiteral(encoded) ? encoded.literal : encoded.symbol;
|
|
1999
|
+
let arr = literalCandidates.get(literal);
|
|
2000
|
+
if (!arr) literalCandidates.set(literal, arr = []);
|
|
2001
|
+
arr.push(a);
|
|
2002
|
+
} else {
|
|
2003
|
+
onlyLiterals = false;
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
1930
2006
|
const sentinels = collectSentinels(encoded);
|
|
1931
|
-
|
|
1932
|
-
idx.byType ??= {};
|
|
1933
|
-
for (const t of candidateTypes) (idx.byType[t] ??= []).push(i);
|
|
1934
|
-
if (sentinels.length > 0) {
|
|
2007
|
+
if (sentinels.length) {
|
|
1935
2008
|
// discriminated variants
|
|
1936
|
-
|
|
2009
|
+
bySentinel ??= new Map();
|
|
2010
|
+
sentinelCandidateCount++;
|
|
1937
2011
|
for (const {
|
|
1938
2012
|
key,
|
|
1939
2013
|
literal
|
|
1940
2014
|
} of sentinels) {
|
|
1941
|
-
let
|
|
1942
|
-
if (!
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
2015
|
+
let entry = bySentinel.get(key);
|
|
2016
|
+
if (!entry) bySentinel.set(key, entry = [new Map(), new Set()]);
|
|
2017
|
+
entry[1].add(i);
|
|
2018
|
+
let indexes = entry[0].get(literal);
|
|
2019
|
+
if (!indexes) entry[0].set(literal, indexes = new Set());
|
|
2020
|
+
indexes.add(i);
|
|
1946
2021
|
}
|
|
1947
2022
|
} else {
|
|
1948
2023
|
// non-discriminated
|
|
1949
|
-
|
|
1950
|
-
|
|
2024
|
+
otherwise ??= {};
|
|
2025
|
+
const candidateTypes = getCandidateTypes(encoded);
|
|
2026
|
+
for (const t of candidateTypes) (otherwise[t] ??= []).push(i);
|
|
1951
2027
|
}
|
|
1952
2028
|
}
|
|
1953
|
-
|
|
1954
|
-
|
|
2029
|
+
if (onlyLiterals && literalCandidates) {
|
|
2030
|
+
literalCandidates.forEach(Object.freeze);
|
|
2031
|
+
index = input => literalCandidates.get(input) ?? emptyCandidates;
|
|
2032
|
+
} else if (bySentinel?.size === 1 && !otherwise) {
|
|
2033
|
+
const [key, [byValue]] = bySentinel.entries().next().value;
|
|
2034
|
+
const candidates = byValue;
|
|
2035
|
+
for (const [literal, indexes] of byValue) {
|
|
2036
|
+
candidates.set(literal, Object.freeze(Array.from(indexes, index => types[index])));
|
|
2037
|
+
}
|
|
2038
|
+
index = (input, isConstructor) => {
|
|
2039
|
+
if (Predicate.isObjectKeyword(input)) {
|
|
2040
|
+
const value = Object.hasOwn(input, key) ? input[key] : undefined;
|
|
2041
|
+
if (value !== undefined) return candidates.get(value) ?? emptyCandidates;
|
|
2042
|
+
if (isConstructor) return types;
|
|
2043
|
+
}
|
|
2044
|
+
return emptyCandidates;
|
|
2045
|
+
};
|
|
2046
|
+
} else if (bySentinel) {
|
|
2047
|
+
// A key owned by every discriminated candidate is safe to use as the initial selector: no candidate can
|
|
2048
|
+
// be excluded merely because it uses a different sentinel key. Prefer the key with the most distinct values
|
|
2049
|
+
// to minimize the matching bucket.
|
|
2050
|
+
let commonSentinel;
|
|
2051
|
+
for (const entry of bySentinel) {
|
|
2052
|
+
if ((!commonSentinel || entry[1][0].size > commonSentinel[1][0].size) && entry[1][1].size === sentinelCandidateCount) {
|
|
2053
|
+
commonSentinel = entry;
|
|
2054
|
+
}
|
|
2055
|
+
}
|
|
2056
|
+
index = (input, isConstructor) => {
|
|
2057
|
+
const runtimeType = input === null ? "null" : Array.isArray(input) ? "array" : typeof input;
|
|
2058
|
+
const base = otherwise?.[runtimeType] ?? emptyCandidates;
|
|
2059
|
+
if (!Predicate.isObjectKeyword(input)) return base.map(i => types[i]);
|
|
2060
|
+
// Non-discriminated candidates are runtime-type fallbacks and are never removed by sentinel checks.
|
|
2061
|
+
const selected = new Set(base);
|
|
2062
|
+
let directKey;
|
|
2063
|
+
// An observed common key can seed the selection directly; an unknown value rules out every
|
|
2064
|
+
// discriminated candidate.
|
|
2065
|
+
if (commonSentinel) {
|
|
2066
|
+
const [key, [byValue]] = commonSentinel;
|
|
2067
|
+
const hasKey = Object.hasOwn(input, key);
|
|
2068
|
+
const value = hasKey ? input[key] : undefined;
|
|
2069
|
+
if (hasKey && (!isConstructor || value !== undefined)) {
|
|
2070
|
+
const match = byValue.get(value);
|
|
2071
|
+
if (!match) return base.map(i => types[i]);
|
|
2072
|
+
for (const i of match) selected.add(i);
|
|
2073
|
+
directKey = key;
|
|
2074
|
+
}
|
|
2075
|
+
}
|
|
2076
|
+
// Without an observed common key, collect positive matches from every sentinel. Constructor mode treats
|
|
2077
|
+
// absent and undefined keys as unconstrained and therefore selects every candidate that owns the key.
|
|
2078
|
+
if (directKey === undefined) {
|
|
2079
|
+
for (const [key, [byValue, all]] of bySentinel) {
|
|
2080
|
+
const hasKey = Object.hasOwn(input, key);
|
|
2081
|
+
const value = hasKey ? input[key] : undefined;
|
|
2082
|
+
if (hasKey && (!isConstructor || value !== undefined)) {
|
|
2083
|
+
const match = byValue.get(value);
|
|
2084
|
+
if (match) {
|
|
2085
|
+
for (const i of match) selected.add(i);
|
|
2086
|
+
}
|
|
2087
|
+
} else if (isConstructor) {
|
|
2088
|
+
for (const i of all) selected.add(i);
|
|
2089
|
+
}
|
|
2090
|
+
}
|
|
2091
|
+
}
|
|
2092
|
+
// Missing keys are neutral. An observed key rejects only selected candidates that own it and do not match.
|
|
2093
|
+
for (const [key, [byValue, all]] of bySentinel) {
|
|
2094
|
+
if (key === directKey) continue;
|
|
2095
|
+
const hasKey = Object.hasOwn(input, key);
|
|
2096
|
+
const value = hasKey ? input[key] : undefined;
|
|
2097
|
+
if (hasKey && (!isConstructor || value !== undefined)) {
|
|
2098
|
+
const match = byValue.get(value);
|
|
2099
|
+
for (const i of selected) {
|
|
2100
|
+
if (all.has(i) && !match?.has(i)) selected.delete(i);
|
|
2101
|
+
}
|
|
2102
|
+
}
|
|
2103
|
+
}
|
|
2104
|
+
return Array.from(selected).sort((a, b) => a - b).map(i => types[i]);
|
|
2105
|
+
};
|
|
2106
|
+
} else {
|
|
2107
|
+
index = input => {
|
|
2108
|
+
const runtimeType = input === null ? "null" : Array.isArray(input) ? "array" : typeof input;
|
|
2109
|
+
return (otherwise?.[runtimeType] ?? emptyCandidates).map(i => types[i]).filter(filterLiterals(input));
|
|
2110
|
+
};
|
|
2111
|
+
}
|
|
2112
|
+
candidateIndexCache.set(types, index);
|
|
2113
|
+
return index;
|
|
1955
2114
|
}
|
|
1956
2115
|
function filterLiterals(input) {
|
|
1957
2116
|
return ast => {
|
|
1958
|
-
const encoded =
|
|
2117
|
+
const encoded = toCandidate(ast);
|
|
1959
2118
|
return encoded._tag === "Literal" ? encoded.literal === input : encoded._tag === "UniqueSymbol" ? encoded.symbol === input : true;
|
|
1960
2119
|
};
|
|
1961
2120
|
}
|
|
@@ -1965,28 +2124,8 @@ function filterLiterals(input) {
|
|
|
1965
2124
|
*
|
|
1966
2125
|
* @internal
|
|
1967
2126
|
*/
|
|
1968
|
-
export function getCandidates(input, types) {
|
|
1969
|
-
|
|
1970
|
-
const runtimeType = input === null ? "null" : Array.isArray(input) ? "array" : typeof input;
|
|
1971
|
-
// 1. Try sentinel-based dispatch (most selective)
|
|
1972
|
-
if (idx.bySentinel) {
|
|
1973
|
-
const base = idx.otherwise?.[runtimeType] ?? [];
|
|
1974
|
-
if (runtimeType === "object" || runtimeType === "array") {
|
|
1975
|
-
const selected = new Set(base);
|
|
1976
|
-
for (const [k, m] of idx.bySentinel) {
|
|
1977
|
-
if (Object.hasOwn(input, k)) {
|
|
1978
|
-
const match = m.get(input[k]);
|
|
1979
|
-
if (match) {
|
|
1980
|
-
for (const candidate of match) selected.add(candidate);
|
|
1981
|
-
}
|
|
1982
|
-
}
|
|
1983
|
-
}
|
|
1984
|
-
return Array.from(selected).sort((a, b) => a - b).map(i => types[i]).filter(filterLiterals(input));
|
|
1985
|
-
}
|
|
1986
|
-
return base.map(i => types[i]);
|
|
1987
|
-
}
|
|
1988
|
-
// 2. Fallback: runtime-type dispatch only
|
|
1989
|
-
return (idx.byType?.[runtimeType] ?? []).map(i => types[i]).filter(filterLiterals(input));
|
|
2127
|
+
export function getCandidates(input, types, isConstructor = false) {
|
|
2128
|
+
return getIndex(types)(input, isConstructor);
|
|
1990
2129
|
}
|
|
1991
2130
|
/**
|
|
1992
2131
|
* AST node representing a union of schemas.
|
|
@@ -2003,15 +2142,14 @@ export function getCandidates(input, types) {
|
|
|
2003
2142
|
*
|
|
2004
2143
|
* **Example** (Inspecting a union AST)
|
|
2005
2144
|
*
|
|
2006
|
-
* ```ts
|
|
2145
|
+
* ```ts import.meta.vitest
|
|
2007
2146
|
* import { Schema, SchemaAST } from "effect"
|
|
2008
2147
|
*
|
|
2009
2148
|
* const schema = Schema.Union([Schema.String, Schema.Number])
|
|
2010
2149
|
* const ast = schema.ast
|
|
2011
2150
|
*
|
|
2012
2151
|
* if (SchemaAST.isUnion(ast)) {
|
|
2013
|
-
*
|
|
2014
|
-
* console.log(ast.mode) // "anyOf"
|
|
2152
|
+
* [ast.types.length, ast.mode] // => [2, "anyOf"]
|
|
2015
2153
|
* }
|
|
2016
2154
|
* ```
|
|
2017
2155
|
*
|
|
@@ -2031,22 +2169,25 @@ export class Union extends Base {
|
|
|
2031
2169
|
this.encodingChecks = encodingChecks;
|
|
2032
2170
|
}
|
|
2033
2171
|
/** @internal */
|
|
2034
|
-
getParser(
|
|
2172
|
+
getParser(compile, compileConstructorDefault) {
|
|
2035
2173
|
// oxlint-disable-next-line @typescript-eslint/no-this-alias
|
|
2036
2174
|
const ast = this;
|
|
2037
|
-
return (
|
|
2038
|
-
if (
|
|
2039
|
-
return
|
|
2175
|
+
return (input, options) => {
|
|
2176
|
+
if (input === InternalParser.missing) {
|
|
2177
|
+
return InternalParser.missingExit;
|
|
2178
|
+
}
|
|
2179
|
+
const candidates = getCandidates(input, ast.types, compileConstructorDefault !== undefined);
|
|
2180
|
+
if (candidates.length === 1) {
|
|
2181
|
+
const result = compile(candidates[0])(input, options);
|
|
2182
|
+
if (result._tag === "Success") return result;
|
|
2183
|
+
return effectIsExit(result) ? failSingleUnionCandidate(ast, result.cause, input, options) : Effect.catchCause(result, cause => failSingleUnionCandidate(ast, cause, input, options));
|
|
2040
2184
|
}
|
|
2041
|
-
const input = oinput.value;
|
|
2042
|
-
const candidates = getCandidates(input, ast.types);
|
|
2043
2185
|
const state = {
|
|
2044
2186
|
ast,
|
|
2045
|
-
|
|
2046
|
-
oinput,
|
|
2187
|
+
compile,
|
|
2047
2188
|
input,
|
|
2048
2189
|
out: undefined,
|
|
2049
|
-
successes: [],
|
|
2190
|
+
successes: ast.mode === "oneOf" ? [] : undefined,
|
|
2050
2191
|
issues: undefined,
|
|
2051
2192
|
options
|
|
2052
2193
|
};
|
|
@@ -2056,10 +2197,13 @@ export class Union extends Base {
|
|
|
2056
2197
|
orderedStep: true
|
|
2057
2198
|
} : undefined);
|
|
2058
2199
|
if (!eff) {
|
|
2059
|
-
|
|
2200
|
+
if (state.out) return state.out;
|
|
2201
|
+
return Effect.fail(new SchemaIssue.AnyOf(ast, state.issues ?? [], input, options));
|
|
2060
2202
|
}
|
|
2061
|
-
return Effect.
|
|
2062
|
-
|
|
2203
|
+
return Effect.flatMapEager(eff, _ => {
|
|
2204
|
+
if (state.out === InternalParser.sameExit) return Effect.succeed(input);
|
|
2205
|
+
if (state.out) return state.out;
|
|
2206
|
+
return Effect.fail(new SchemaIssue.AnyOf(ast, state.issues ?? [], input, options));
|
|
2063
2207
|
});
|
|
2064
2208
|
};
|
|
2065
2209
|
}
|
|
@@ -2113,10 +2257,15 @@ export class Union extends Base {
|
|
|
2113
2257
|
return Array.from(new Set(types)).join(" | ");
|
|
2114
2258
|
}
|
|
2115
2259
|
}
|
|
2260
|
+
function failSingleUnionCandidate(ast, cause, input, options) {
|
|
2261
|
+
const issue = InternalSchemaCause.getSchemaIssue(cause);
|
|
2262
|
+
if (!issue) return Exit.failCause(cause);
|
|
2263
|
+
return Exit.fail(new SchemaIssue.AnyOf(ast, [issue], input, options));
|
|
2264
|
+
}
|
|
2116
2265
|
const parseUnion = /*#__PURE__*/iterateEager()({
|
|
2117
2266
|
onItem(s, ast) {
|
|
2118
|
-
const parser = s.
|
|
2119
|
-
return parser(s.
|
|
2267
|
+
const parser = s.compile(ast);
|
|
2268
|
+
return parser(s.input, s.options);
|
|
2120
2269
|
},
|
|
2121
2270
|
step(s, candidate, exit) {
|
|
2122
2271
|
if (exit._tag === "Failure") {
|
|
@@ -2126,20 +2275,20 @@ const parseUnion = /*#__PURE__*/iterateEager()({
|
|
|
2126
2275
|
}
|
|
2127
2276
|
if (s.issues) s.issues.push(issue);else s.issues = [issue];
|
|
2128
2277
|
} else {
|
|
2129
|
-
if (s.out && s.
|
|
2278
|
+
if (s.out && s.successes) {
|
|
2130
2279
|
s.successes.push(candidate);
|
|
2131
|
-
return Exit.fail(new SchemaIssue.OneOf(s.ast, s.input, s.
|
|
2280
|
+
return Exit.fail(new SchemaIssue.OneOf(s.ast, s.successes, s.input, s.options));
|
|
2132
2281
|
}
|
|
2133
|
-
s.out = exit
|
|
2134
|
-
s.successes
|
|
2135
|
-
|
|
2282
|
+
s.out = exit;
|
|
2283
|
+
if (s.successes) {
|
|
2284
|
+
s.successes.push(candidate);
|
|
2285
|
+
} else {
|
|
2136
2286
|
return Exit.void;
|
|
2137
2287
|
}
|
|
2138
2288
|
}
|
|
2139
2289
|
}
|
|
2140
2290
|
});
|
|
2141
2291
|
const nonFiniteLiterals = /*#__PURE__*/new Union([/*#__PURE__*/new Literal("Infinity"), /*#__PURE__*/new Literal("-Infinity"), /*#__PURE__*/new Literal("NaN")], "anyOf");
|
|
2142
|
-
const numberToJson = /*#__PURE__*/new Link(/*#__PURE__*/new Union([number, nonFiniteLiterals], "anyOf"), /*#__PURE__*/new SchemaTransformation.Transformation(/*#__PURE__*/SchemaGetter.Number(), /*#__PURE__*/SchemaGetter.transform(n => globalThis.Number.isFinite(n) ? n : globalThis.String(n))));
|
|
2143
2292
|
function formatIsMutable(isMutable) {
|
|
2144
2293
|
return isMutable ? "" : "readonly ";
|
|
2145
2294
|
}
|
|
@@ -2170,7 +2319,7 @@ export function memoizeThunk(f) {
|
|
|
2170
2319
|
*
|
|
2171
2320
|
* **Example** (Defining recursive schema ASTs)
|
|
2172
2321
|
*
|
|
2173
|
-
* ```ts
|
|
2322
|
+
* ```ts import.meta.vitest
|
|
2174
2323
|
* import { Schema, SchemaAST } from "effect"
|
|
2175
2324
|
*
|
|
2176
2325
|
* interface Category {
|
|
@@ -2183,7 +2332,7 @@ export function memoizeThunk(f) {
|
|
|
2183
2332
|
* children: Schema.Array(Schema.suspend((): Schema.Codec<Category> => Category))
|
|
2184
2333
|
* })
|
|
2185
2334
|
*
|
|
2186
|
-
* //
|
|
2335
|
+
* SchemaAST.isObjects(Category.ast) // => true
|
|
2187
2336
|
* ```
|
|
2188
2337
|
*
|
|
2189
2338
|
* @see {@link isSuspend}
|
|
@@ -2194,15 +2343,16 @@ export class Suspend extends Base {
|
|
|
2194
2343
|
_tag = "Suspend";
|
|
2195
2344
|
thunk;
|
|
2196
2345
|
constructor(thunk, annotations, checks, encoding, context) {
|
|
2197
|
-
if (checks
|
|
2346
|
+
if (checks) {
|
|
2198
2347
|
throw new Error("Cannot add checks to Suspend");
|
|
2199
2348
|
}
|
|
2200
2349
|
super(annotations, undefined, encoding, context);
|
|
2201
2350
|
this.thunk = memoizeThunk(thunk);
|
|
2202
2351
|
}
|
|
2203
2352
|
/** @internal */
|
|
2204
|
-
getParser(
|
|
2205
|
-
|
|
2353
|
+
getParser(compile) {
|
|
2354
|
+
let parser;
|
|
2355
|
+
return (input, options) => (parser ??= compile(this.thunk()))(input, options);
|
|
2206
2356
|
}
|
|
2207
2357
|
/** @internal */
|
|
2208
2358
|
recur(recur) {
|
|
@@ -2223,8 +2373,8 @@ export class Suspend extends Base {
|
|
|
2223
2373
|
*
|
|
2224
2374
|
* - `run` — the validation function. Returns `undefined` on success, or an
|
|
2225
2375
|
* `Issue` on failure.
|
|
2226
|
-
* - `annotations` — optional filter-level
|
|
2227
|
-
*
|
|
2376
|
+
* - `annotations` — optional filter-level annotations (expected message,
|
|
2377
|
+
* representation, arbitrary constraint hints).
|
|
2228
2378
|
* - `aborted` — when `true`, parsing stops immediately after this filter
|
|
2229
2379
|
* fails (no further checks run).
|
|
2230
2380
|
*
|
|
@@ -2303,13 +2453,38 @@ export class FilterGroup extends Pipeable.Class {
|
|
|
2303
2453
|
}
|
|
2304
2454
|
/** @internal */
|
|
2305
2455
|
export function makeFilter(filter, annotations, aborted = false) {
|
|
2306
|
-
return new Filter((input, ast, options) => SchemaIssue.
|
|
2456
|
+
return new Filter((input, ast, options) => SchemaIssue.normalizeFilterOutput(ast, filter(input, ast, options), input, options), annotations, aborted);
|
|
2307
2457
|
}
|
|
2308
2458
|
/** @internal */
|
|
2309
2459
|
export function makeFilterByGuard(is, annotations) {
|
|
2310
|
-
return new Filter(input => is(input) ? undefined : new SchemaIssue.InvalidValue(
|
|
2460
|
+
return new Filter((input, _ast, options) => is(input) ? undefined : new SchemaIssue.InvalidValue(undefined, input, options), annotations, true // after a guard, we always want to abort
|
|
2311
2461
|
);
|
|
2312
2462
|
}
|
|
2463
|
+
/** @internal */
|
|
2464
|
+
export function isFinite(annotations) {
|
|
2465
|
+
return makeFilter(n => globalThis.Number.isFinite(n), {
|
|
2466
|
+
expected: "a finite number",
|
|
2467
|
+
representation: {
|
|
2468
|
+
id: "effect/schema/isFinite",
|
|
2469
|
+
payload: null
|
|
2470
|
+
},
|
|
2471
|
+
toJsonSchema: () => ({
|
|
2472
|
+
type: "number"
|
|
2473
|
+
}),
|
|
2474
|
+
toCode: () => ({
|
|
2475
|
+
runtime: "Schema.isFinite()"
|
|
2476
|
+
}),
|
|
2477
|
+
arbitrary: {
|
|
2478
|
+
constraint: {
|
|
2479
|
+
noInfinity: true,
|
|
2480
|
+
noNaN: true
|
|
2481
|
+
}
|
|
2482
|
+
},
|
|
2483
|
+
...annotations
|
|
2484
|
+
});
|
|
2485
|
+
}
|
|
2486
|
+
/** @internal */
|
|
2487
|
+
export const finite = /*#__PURE__*/appendChecks(number, [/*#__PURE__*/isFinite()]);
|
|
2313
2488
|
/**
|
|
2314
2489
|
* Creates a {@link Filter} that validates strings by running `RegExp.test`.
|
|
2315
2490
|
*
|
|
@@ -2321,21 +2496,25 @@ export function makeFilterByGuard(is, annotations) {
|
|
|
2321
2496
|
* **Details**
|
|
2322
2497
|
*
|
|
2323
2498
|
* The filter can be used with `Schema.filter` or attached directly to a
|
|
2324
|
-
* `String` AST node through checks. The regular expression
|
|
2325
|
-
*
|
|
2499
|
+
* `String` AST node through checks. The regular expression is cloned and its
|
|
2500
|
+
* `lastIndex` is reset before each test, so global and sticky expressions are
|
|
2501
|
+
* deterministic and the provided regular expression is not mutated. The
|
|
2502
|
+
* regular expression source is stored in annotations for serialization and
|
|
2503
|
+
* arbitrary generation.
|
|
2326
2504
|
*
|
|
2327
2505
|
* **Gotchas**
|
|
2328
2506
|
*
|
|
2329
|
-
*
|
|
2330
|
-
*
|
|
2331
|
-
* `y` flag.
|
|
2507
|
+
* When deriving an arbitrary, only `regExp.source` is used. Regular expression
|
|
2508
|
+
* flags are ignored because fast-check does not support them.
|
|
2332
2509
|
*
|
|
2333
2510
|
* **Example** (Validating an email pattern)
|
|
2334
2511
|
*
|
|
2335
|
-
* ```ts
|
|
2512
|
+
* ```ts import.meta.vitest
|
|
2336
2513
|
* import { SchemaAST } from "effect"
|
|
2337
2514
|
*
|
|
2338
2515
|
* const emailFilter = SchemaAST.isPattern(/^[^@]+@[^@]+$/)
|
|
2516
|
+
* emailFilter.run("alice@example.com", SchemaAST.string, {}) // => undefined
|
|
2517
|
+
* emailFilter.run("invalid", SchemaAST.string, {})?._tag // => "InvalidValue"
|
|
2339
2518
|
* ```
|
|
2340
2519
|
*
|
|
2341
2520
|
* @see {@link Filter}
|
|
@@ -2344,12 +2523,22 @@ export function makeFilterByGuard(is, annotations) {
|
|
|
2344
2523
|
*/
|
|
2345
2524
|
export function isPattern(regExp, annotations) {
|
|
2346
2525
|
const source = regExp.source;
|
|
2347
|
-
|
|
2526
|
+
const pattern = new globalThis.RegExp(source, regExp.flags);
|
|
2527
|
+
return makeFilter(s => {
|
|
2528
|
+
pattern.lastIndex = 0;
|
|
2529
|
+
return pattern.test(s);
|
|
2530
|
+
}, {
|
|
2348
2531
|
expected: `a string matching the RegExp ${source}`,
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2532
|
+
representation: {
|
|
2533
|
+
id: "effect/schema/isPattern",
|
|
2534
|
+
payload: {
|
|
2535
|
+
source,
|
|
2536
|
+
flags: regExp.flags
|
|
2537
|
+
}
|
|
2352
2538
|
},
|
|
2539
|
+
toJsonSchema: () => ({
|
|
2540
|
+
pattern: source
|
|
2541
|
+
}),
|
|
2353
2542
|
arbitrary: {
|
|
2354
2543
|
constraint: {
|
|
2355
2544
|
patterns: [regExp.source]
|
|
@@ -2363,6 +2552,11 @@ function modifyOwnPropertyDescriptors(ast, f) {
|
|
|
2363
2552
|
f(d);
|
|
2364
2553
|
return Object.create(Object.getPrototypeOf(ast), d);
|
|
2365
2554
|
}
|
|
2555
|
+
const contextOwners = /*#__PURE__*/new WeakMap();
|
|
2556
|
+
/** @internal */
|
|
2557
|
+
export function getContextOwner(ast) {
|
|
2558
|
+
return contextOwners.get(ast) ?? ast;
|
|
2559
|
+
}
|
|
2366
2560
|
/** @internal */
|
|
2367
2561
|
export function replaceEncoding(ast, encoding) {
|
|
2368
2562
|
if (ast.encoding === encoding) {
|
|
@@ -2377,9 +2571,15 @@ export function replaceContext(ast, context) {
|
|
|
2377
2571
|
if (ast.context === context) {
|
|
2378
2572
|
return ast;
|
|
2379
2573
|
}
|
|
2380
|
-
|
|
2574
|
+
const owner = getContextOwner(ast);
|
|
2575
|
+
if (owner.context === context) {
|
|
2576
|
+
return owner;
|
|
2577
|
+
}
|
|
2578
|
+
const out = modifyOwnPropertyDescriptors(ast, d => {
|
|
2381
2579
|
d.context.value = context;
|
|
2382
2580
|
});
|
|
2581
|
+
contextOwners.set(out, owner);
|
|
2582
|
+
return out;
|
|
2383
2583
|
}
|
|
2384
2584
|
/** @internal */
|
|
2385
2585
|
export function getLastEncoding(ast) {
|
|
@@ -2400,7 +2600,7 @@ export function annotate(ast, annotations) {
|
|
|
2400
2600
|
}
|
|
2401
2601
|
/** @internal */
|
|
2402
2602
|
export function replaceChecks(ast, checks) {
|
|
2403
|
-
if (ast._tag === "Suspend" && checks
|
|
2603
|
+
if (ast._tag === "Suspend" && checks) {
|
|
2404
2604
|
throw new Error("Cannot add checks to Suspend");
|
|
2405
2605
|
}
|
|
2406
2606
|
if (ast.checks === checks) {
|
|
@@ -2414,20 +2614,26 @@ export function replaceChecks(ast, checks) {
|
|
|
2414
2614
|
export function appendChecks(ast, checks) {
|
|
2415
2615
|
return replaceChecks(ast, combineChecks(ast.checks, checks));
|
|
2416
2616
|
}
|
|
2617
|
+
/** @internal */
|
|
2618
|
+
export function mapLink(link, f) {
|
|
2619
|
+
const to = f(link.to);
|
|
2620
|
+
return to === link.to ? link : new Link(to, link.transformation);
|
|
2621
|
+
}
|
|
2417
2622
|
function updateLastLink(encoding, f) {
|
|
2418
2623
|
const links = encoding;
|
|
2419
2624
|
const last = links[links.length - 1];
|
|
2420
|
-
const
|
|
2421
|
-
|
|
2422
|
-
return Arr.append(encoding.slice(0, encoding.length - 1), new Link(to, last.transformation));
|
|
2423
|
-
}
|
|
2424
|
-
return encoding;
|
|
2625
|
+
const out = mapLink(last, f);
|
|
2626
|
+
return out === last ? encoding : Arr.append(encoding.slice(0, encoding.length - 1), out);
|
|
2425
2627
|
}
|
|
2426
2628
|
/** @internal */
|
|
2427
2629
|
export function applyToLastLink(f) {
|
|
2428
2630
|
return ast => ast.encoding ? replaceEncoding(ast, updateLastLink(ast.encoding, f)) : ast;
|
|
2429
2631
|
}
|
|
2430
2632
|
/** @internal */
|
|
2633
|
+
export function replaceContextLastLink(ast, context) {
|
|
2634
|
+
return applyToLastLink(ast => replaceContext(ast, context))(ast);
|
|
2635
|
+
}
|
|
2636
|
+
/** @internal */
|
|
2431
2637
|
export function applyToSelfOrLastLinkEncoding(f) {
|
|
2432
2638
|
function out(ast) {
|
|
2433
2639
|
return ast.encoding ? replaceEncoding(ast, updateLastLink(ast.encoding, out)) : f(ast);
|
|
@@ -2435,6 +2641,17 @@ export function applyToSelfOrLastLinkEncoding(f) {
|
|
|
2435
2641
|
return memoize(out);
|
|
2436
2642
|
}
|
|
2437
2643
|
/** @internal */
|
|
2644
|
+
export function applyToSelfOrLastLinkEncodingIdempotent(f, options) {
|
|
2645
|
+
function out(ast) {
|
|
2646
|
+
if (ast.encoding) {
|
|
2647
|
+
const last = ast.encoding[ast.encoding.length - 1];
|
|
2648
|
+
return options?.stopAt?.(last) ? ast : replaceEncoding(ast, updateLastLink(ast.encoding, out));
|
|
2649
|
+
}
|
|
2650
|
+
return f(ast);
|
|
2651
|
+
}
|
|
2652
|
+
return memoizeIdempotent(out);
|
|
2653
|
+
}
|
|
2654
|
+
/** @internal */
|
|
2438
2655
|
export function middlewareDecoding(ast, middleware) {
|
|
2439
2656
|
return appendTransformation(ast, middleware, toType(ast));
|
|
2440
2657
|
}
|
|
@@ -2469,43 +2686,31 @@ export function mapOrSame(as, f) {
|
|
|
2469
2686
|
}
|
|
2470
2687
|
/** @internal */
|
|
2471
2688
|
export function annotateKey(ast, annotations) {
|
|
2472
|
-
const context = ast.context ? new Context(ast.context.isOptional, ast.context.isMutable, ast.context.
|
|
2689
|
+
const context = ast.context ? new Context(ast.context.isOptional, ast.context.isMutable, ast.context.constructorDefault, {
|
|
2473
2690
|
...ast.context.annotations,
|
|
2474
2691
|
...annotations
|
|
2475
2692
|
}) : new Context(false, false, undefined, annotations);
|
|
2476
2693
|
return replaceContext(ast, context);
|
|
2477
2694
|
}
|
|
2478
2695
|
/** @internal */
|
|
2479
|
-
export const
|
|
2480
|
-
|
|
2481
|
-
* Marks an AST node's property key as optional by setting
|
|
2482
|
-
* {@link Context.isOptional} to `true`.
|
|
2483
|
-
*
|
|
2484
|
-
* **Details**
|
|
2485
|
-
*
|
|
2486
|
-
* Also propagates the optional flag through the last link of the encoding
|
|
2487
|
-
* chain if present.
|
|
2488
|
-
*
|
|
2489
|
-
* @see {@link isOptional}
|
|
2490
|
-
* @see {@link Context}
|
|
2491
|
-
* @category transforming
|
|
2492
|
-
* @since 4.0.0
|
|
2493
|
-
*/
|
|
2494
|
-
export function optionalKey(ast) {
|
|
2495
|
-
const context = ast.context ? ast.context.isOptional === false ? new Context(true, ast.context.isMutable, ast.context.defaultValue, ast.context.annotations) : ast.context : new Context(true, false);
|
|
2696
|
+
export const optionalKey = /*#__PURE__*/memoizeIdempotent(ast => {
|
|
2697
|
+
const context = ast.context ? ast.context.isOptional === false ? new Context(true, ast.context.isMutable, ast.context.constructorDefault, ast.context.annotations) : ast.context : new Context(true, false);
|
|
2496
2698
|
return optionalKeyLastLink(replaceContext(ast, context));
|
|
2497
|
-
}
|
|
2498
|
-
const
|
|
2699
|
+
});
|
|
2700
|
+
const optionalKeyLastLink = /*#__PURE__*/applyToLastLink(optionalKey);
|
|
2701
|
+
/** @internal */
|
|
2702
|
+
export const optional = /*#__PURE__*/memoize(ast => optionalKey(new Union([ast, undefined_], "anyOf")));
|
|
2499
2703
|
/** @internal */
|
|
2500
|
-
export
|
|
2501
|
-
const context = ast.context ? ast.context.isMutable === false ? new Context(ast.context.isOptional, true, ast.context.
|
|
2704
|
+
export const mutableKey = /*#__PURE__*/memoizeIdempotent(ast => {
|
|
2705
|
+
const context = ast.context ? ast.context.isMutable === false ? new Context(ast.context.isOptional, true, ast.context.constructorDefault, ast.context.annotations) : ast.context : new Context(false, true);
|
|
2502
2706
|
return mutableKeyLastLink(replaceContext(ast, context));
|
|
2503
|
-
}
|
|
2707
|
+
});
|
|
2708
|
+
const mutableKeyLastLink = /*#__PURE__*/applyToLastLink(mutableKey);
|
|
2504
2709
|
/** @internal */
|
|
2505
2710
|
export function withConstructorDefault(ast, defaultValue) {
|
|
2506
2711
|
const transformation = new SchemaTransformation.Transformation(SchemaGetter.withDefault(defaultValue), SchemaGetter.passthrough());
|
|
2507
|
-
const
|
|
2508
|
-
const context = ast.context ? new Context(ast.context.isOptional, ast.context.isMutable,
|
|
2712
|
+
const constructorDefault = new Link(unknown, transformation);
|
|
2713
|
+
const context = ast.context ? new Context(ast.context.isOptional, ast.context.isMutable, constructorDefault, ast.context.annotations) : new Context(false, false, constructorDefault);
|
|
2509
2714
|
return replaceContext(ast, context);
|
|
2510
2715
|
}
|
|
2511
2716
|
/**
|
|
@@ -2560,12 +2765,12 @@ function parseParameter(ast) {
|
|
|
2560
2765
|
};
|
|
2561
2766
|
}
|
|
2562
2767
|
/** @internal */
|
|
2563
|
-
export function record(key, value
|
|
2768
|
+
export function record(key, value) {
|
|
2564
2769
|
const {
|
|
2565
2770
|
literals,
|
|
2566
2771
|
parameters: indexSignatures
|
|
2567
2772
|
} = parseParameter(key);
|
|
2568
|
-
return new Objects(literals.map(literal => new PropertySignature(literal, value)), indexSignatures.map(parameter => new IndexSignature(parameter, value
|
|
2773
|
+
return new Objects(literals.map(literal => new PropertySignature(literal, value)), indexSignatures.map(parameter => new IndexSignature(parameter, value)));
|
|
2569
2774
|
}
|
|
2570
2775
|
// -------------------------------------------------------------------------------------
|
|
2571
2776
|
// Public APIs
|
|
@@ -2590,6 +2795,17 @@ export function isOptional(ast) {
|
|
|
2590
2795
|
export function isMutable(ast) {
|
|
2591
2796
|
return ast.context?.isMutable ?? false;
|
|
2592
2797
|
}
|
|
2798
|
+
function isStructuralCheck(check) {
|
|
2799
|
+
return check.annotations?.[InternalAnnotations.STRUCTURAL_ANNOTATION_KEY] === true || check._tag === "FilterGroup" && check.checks.every(isStructuralCheck);
|
|
2800
|
+
}
|
|
2801
|
+
function extractStructuralChecks(checks) {
|
|
2802
|
+
function extract(check) {
|
|
2803
|
+
if (isStructuralCheck(check)) return [check];
|
|
2804
|
+
return check._tag === "FilterGroup" ? check.checks.flatMap(extract) : [];
|
|
2805
|
+
}
|
|
2806
|
+
const out = checks.flatMap(extract);
|
|
2807
|
+
return Arr.isArrayNonEmpty(out) ? out : undefined;
|
|
2808
|
+
}
|
|
2593
2809
|
/**
|
|
2594
2810
|
* Strips all encoding transformations from an AST, returning the decoded
|
|
2595
2811
|
* (type-level) representation.
|
|
@@ -2602,12 +2818,12 @@ export function isMutable(ast) {
|
|
|
2602
2818
|
*
|
|
2603
2819
|
* **Example** (Getting the type AST)
|
|
2604
2820
|
*
|
|
2605
|
-
* ```ts
|
|
2821
|
+
* ```ts import.meta.vitest
|
|
2606
2822
|
* import { Schema, SchemaAST } from "effect"
|
|
2607
2823
|
*
|
|
2608
2824
|
* const schema = Schema.NumberFromString
|
|
2609
2825
|
* const typeAst = SchemaAST.toType(schema.ast)
|
|
2610
|
-
*
|
|
2826
|
+
* typeAst._tag // => "Number"
|
|
2611
2827
|
* ```
|
|
2612
2828
|
*
|
|
2613
2829
|
* @see {@link toEncoded}
|
|
@@ -2615,7 +2831,7 @@ export function isMutable(ast) {
|
|
|
2615
2831
|
* @category transforming
|
|
2616
2832
|
* @since 4.0.0
|
|
2617
2833
|
*/
|
|
2618
|
-
export const toType = /*#__PURE__*/
|
|
2834
|
+
export const toType = /*#__PURE__*/memoizeIdempotent(ast => {
|
|
2619
2835
|
if (ast.encoding) {
|
|
2620
2836
|
return toType(replaceEncoding(ast, undefined));
|
|
2621
2837
|
}
|
|
@@ -2623,11 +2839,10 @@ export const toType = /*#__PURE__*/memoize(ast => {
|
|
|
2623
2839
|
const type = out.recur?.(toType) ?? out;
|
|
2624
2840
|
const encodingChecks = type.encodingChecks;
|
|
2625
2841
|
if (encodingChecks) {
|
|
2842
|
+
const checks = type === ast ? encodingChecks : isArrays(type) || isObjects(type) || isDeclaration(type) && type.typeParameters.length > 0 ? extractStructuralChecks(encodingChecks) : undefined;
|
|
2626
2843
|
return modifyOwnPropertyDescriptors(type, d => {
|
|
2627
2844
|
d.encodingChecks.value = undefined;
|
|
2628
|
-
|
|
2629
|
-
d.checks.value = combineChecks(type.checks, encodingChecks);
|
|
2630
|
-
}
|
|
2845
|
+
d.checks.value = combineChecks(type.checks, checks);
|
|
2631
2846
|
});
|
|
2632
2847
|
}
|
|
2633
2848
|
return type;
|
|
@@ -2645,12 +2860,12 @@ export const toType = /*#__PURE__*/memoize(ast => {
|
|
|
2645
2860
|
*
|
|
2646
2861
|
* **Example** (Getting the encoded AST)
|
|
2647
2862
|
*
|
|
2648
|
-
* ```ts
|
|
2863
|
+
* ```ts import.meta.vitest
|
|
2649
2864
|
* import { Schema, SchemaAST } from "effect"
|
|
2650
2865
|
*
|
|
2651
2866
|
* const schema = Schema.NumberFromString
|
|
2652
2867
|
* const encodedAst = SchemaAST.toEncoded(schema.ast)
|
|
2653
|
-
*
|
|
2868
|
+
* encodedAst._tag // => "String"
|
|
2654
2869
|
* ```
|
|
2655
2870
|
*
|
|
2656
2871
|
* @see {@link toType}
|
|
@@ -2658,7 +2873,7 @@ export const toType = /*#__PURE__*/memoize(ast => {
|
|
|
2658
2873
|
* @category transforming
|
|
2659
2874
|
* @since 4.0.0
|
|
2660
2875
|
*/
|
|
2661
|
-
export const toEncoded = /*#__PURE__*/
|
|
2876
|
+
export const toEncoded = /*#__PURE__*/memoizeIdempotent(ast => {
|
|
2662
2877
|
return toType(flip(ast));
|
|
2663
2878
|
});
|
|
2664
2879
|
function flipEncoding(ast, encoding) {
|
|
@@ -2712,39 +2927,34 @@ export function containsUndefined(ast) {
|
|
|
2712
2927
|
}
|
|
2713
2928
|
}
|
|
2714
2929
|
function fromConst(ast, value) {
|
|
2715
|
-
const succeed =
|
|
2716
|
-
return
|
|
2717
|
-
if (
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
return oinput.value === value ? succeed : Effect.fail(new SchemaIssue.InvalidType(ast, oinput));
|
|
2930
|
+
const succeed = InternalParser.succeed(value);
|
|
2931
|
+
return (input, options) => {
|
|
2932
|
+
if (input === InternalParser.missing) return InternalParser.missingExit;
|
|
2933
|
+
if (input === value) return succeed;
|
|
2934
|
+
return Effect.fail(new SchemaIssue.InvalidType(ast, input, options));
|
|
2721
2935
|
};
|
|
2722
2936
|
}
|
|
2723
|
-
function fromAnyToConst(value) {
|
|
2724
|
-
const succeed = Effect.succeedSome(value);
|
|
2725
|
-
return oinput => oinput._tag === "None" ? Effect.succeedNone : succeed;
|
|
2726
|
-
}
|
|
2727
2937
|
function fromRefinement(ast, refinement) {
|
|
2728
|
-
return
|
|
2729
|
-
if (
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
return refinement(oinput.value) ? Effect.succeed(oinput) : Effect.fail(new SchemaIssue.InvalidType(ast, oinput));
|
|
2938
|
+
return (input, options) => {
|
|
2939
|
+
if (input === InternalParser.missing) return InternalParser.missingExit;
|
|
2940
|
+
if (refinement(input)) return InternalParser.sameExit;
|
|
2941
|
+
return Effect.fail(new SchemaIssue.InvalidType(ast, input, options));
|
|
2733
2942
|
};
|
|
2734
2943
|
}
|
|
2735
|
-
function
|
|
2736
|
-
|
|
2737
|
-
const
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2944
|
+
function segmentTemplateLiteralParts(ast, input, options) {
|
|
2945
|
+
const parts = ast.encodedParts;
|
|
2946
|
+
const literals = ast.literals;
|
|
2947
|
+
const inputLength = input.length;
|
|
2948
|
+
for (let i = 0; i < literals.length; i++) {
|
|
2949
|
+
const literal = literals[i];
|
|
2950
|
+
if (literal && !input.includes(literal)) return undefined;
|
|
2951
|
+
}
|
|
2952
|
+
if (ast.suffixLengths[0] > inputLength) return undefined;
|
|
2742
2953
|
const out = new Array(parts.length);
|
|
2743
|
-
|
|
2954
|
+
let failures;
|
|
2744
2955
|
function go(i, pos) {
|
|
2745
|
-
if (i === parts.length) return pos ===
|
|
2746
|
-
|
|
2747
|
-
if (failures.has(key)) return false;
|
|
2956
|
+
if (i === parts.length) return pos === inputLength;
|
|
2957
|
+
if (failures?.has(i * (inputLength + 1) + pos)) return false;
|
|
2748
2958
|
const part = parts[i];
|
|
2749
2959
|
if (i === parts.length - 1) {
|
|
2750
2960
|
const s = input.slice(pos);
|
|
@@ -2753,21 +2963,28 @@ function segmentTemplateLiteralParts(parts, input, options) {
|
|
|
2753
2963
|
return true;
|
|
2754
2964
|
}
|
|
2755
2965
|
} else if (part._tag === "Literal") {
|
|
2756
|
-
const s =
|
|
2966
|
+
const s = literals[i];
|
|
2757
2967
|
if (input.startsWith(s, pos) && go(i + 1, pos + s.length)) {
|
|
2758
2968
|
out[i] = s;
|
|
2759
2969
|
return true;
|
|
2760
2970
|
}
|
|
2761
2971
|
} else {
|
|
2762
|
-
|
|
2972
|
+
const maximumEnd = inputLength - ast.suffixLengths[i + 1];
|
|
2973
|
+
// Splits preceding a literal only need to consider occurrences of that literal.
|
|
2974
|
+
const anchor = literals[i + 1];
|
|
2975
|
+
let end = anchor === undefined ? maximumEnd : input.lastIndexOf(anchor, maximumEnd);
|
|
2976
|
+
while (end >= pos) {
|
|
2763
2977
|
const s = input.slice(pos, end);
|
|
2764
2978
|
if (part.matchPart(s, options) !== undefined && go(i + 1, end)) {
|
|
2765
2979
|
out[i] = s;
|
|
2766
2980
|
return true;
|
|
2767
2981
|
}
|
|
2982
|
+
if (end === 0) break;
|
|
2983
|
+
end = anchor === undefined ? end - 1 : input.lastIndexOf(anchor, end - 1);
|
|
2768
2984
|
}
|
|
2769
2985
|
}
|
|
2770
|
-
failures
|
|
2986
|
+
failures ??= new Set();
|
|
2987
|
+
failures.add(i * (inputLength + 1) + pos);
|
|
2771
2988
|
return false;
|
|
2772
2989
|
}
|
|
2773
2990
|
return go(0, 0) ? out : undefined;
|
|
@@ -2778,7 +2995,7 @@ export const enumsToLiterals = /*#__PURE__*/memoize(ast => {
|
|
|
2778
2995
|
title: e[0]
|
|
2779
2996
|
})), "anyOf");
|
|
2780
2997
|
});
|
|
2781
|
-
const parameterFromPropertyKey = /*#__PURE__*/
|
|
2998
|
+
const parameterFromPropertyKey = /*#__PURE__*/applyToSelfOrLastLinkEncodingIdempotent(ast => {
|
|
2782
2999
|
switch (ast._tag) {
|
|
2783
3000
|
default:
|
|
2784
3001
|
return ast;
|
|
@@ -2789,7 +3006,7 @@ const parameterFromPropertyKey = /*#__PURE__*/applyToSelfOrLastLinkEncoding(ast
|
|
|
2789
3006
|
}
|
|
2790
3007
|
});
|
|
2791
3008
|
/** @internal */
|
|
2792
|
-
export const parameterFromString = /*#__PURE__*/
|
|
3009
|
+
export const parameterFromString = /*#__PURE__*/applyToSelfOrLastLinkEncodingIdempotent(ast => {
|
|
2793
3010
|
switch (ast._tag) {
|
|
2794
3011
|
default:
|
|
2795
3012
|
return ast;
|
|
@@ -2800,7 +3017,7 @@ export const parameterFromString = /*#__PURE__*/applyToSelfOrLastLinkEncoding(as
|
|
|
2800
3017
|
return ast.recur(parameterFromString);
|
|
2801
3018
|
}
|
|
2802
3019
|
});
|
|
2803
|
-
const partFromString = /*#__PURE__*/
|
|
3020
|
+
const partFromString = /*#__PURE__*/applyToSelfOrLastLinkEncodingIdempotent(ast => {
|
|
2804
3021
|
switch (ast._tag) {
|
|
2805
3022
|
default:
|
|
2806
3023
|
return ast;
|
|
@@ -2818,15 +3035,18 @@ const partFromString = /*#__PURE__*/applyToSelfOrLastLinkEncoding(ast => {
|
|
|
2818
3035
|
*/
|
|
2819
3036
|
export const STRING_PATTERN = "[\\s\\S]*?";
|
|
2820
3037
|
const isStringFiniteRegExp = /*#__PURE__*/new globalThis.RegExp(`^${FINITE_PATTERN}$`);
|
|
2821
|
-
const isStringNumberRegExp = /*#__PURE__*/new globalThis.RegExp(
|
|
3038
|
+
const isStringNumberRegExp = /*#__PURE__*/new globalThis.RegExp(`^(?:${FINITE_PATTERN}|Infinity|-Infinity|NaN)$`);
|
|
2822
3039
|
/** @internal */
|
|
2823
3040
|
export function isStringFinite(annotations) {
|
|
2824
3041
|
return isPattern(isStringFiniteRegExp, {
|
|
2825
3042
|
expected: "a string representing a finite number",
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
3043
|
+
representation: {
|
|
3044
|
+
id: "effect/schema/isStringFinite",
|
|
3045
|
+
payload: null
|
|
2829
3046
|
},
|
|
3047
|
+
toJsonSchema: () => ({
|
|
3048
|
+
pattern: isStringFiniteRegExp.source
|
|
3049
|
+
}),
|
|
2830
3050
|
...annotations
|
|
2831
3051
|
});
|
|
2832
3052
|
}
|
|
@@ -2842,10 +3062,13 @@ const isStringBigIntRegExp = /*#__PURE__*/new globalThis.RegExp(`^${BIGINT_PATTE
|
|
|
2842
3062
|
export function isStringBigInt(annotations) {
|
|
2843
3063
|
return isPattern(isStringBigIntRegExp, {
|
|
2844
3064
|
expected: "a string representing a bigint",
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
3065
|
+
representation: {
|
|
3066
|
+
id: "effect/schema/isStringBigInt",
|
|
3067
|
+
payload: null
|
|
2848
3068
|
},
|
|
3069
|
+
toJsonSchema: () => ({
|
|
3070
|
+
pattern: isStringBigIntRegExp.source
|
|
3071
|
+
}),
|
|
2849
3072
|
...annotations
|
|
2850
3073
|
});
|
|
2851
3074
|
}
|
|
@@ -2861,23 +3084,26 @@ export const symbolString = /*#__PURE__*/appendChecks(string, [/*#__PURE__*/isSt
|
|
|
2861
3084
|
/**
|
|
2862
3085
|
* to distinguish between Symbol and String, we need to add a check to the string keyword
|
|
2863
3086
|
*/
|
|
2864
|
-
const symbolToString = /*#__PURE__*/new Link(symbolString, /*#__PURE__*/new SchemaTransformation.Transformation(/*#__PURE__*/SchemaGetter.transform(description => globalThis.Symbol.for(isStringSymbolRegExp.exec(description)[1])), /*#__PURE__*/SchemaGetter.transformOrFail(sym => {
|
|
3087
|
+
const symbolToString = /*#__PURE__*/new Link(symbolString, /*#__PURE__*/new SchemaTransformation.Transformation(/*#__PURE__*/SchemaGetter.transform(description => globalThis.Symbol.for(isStringSymbolRegExp.exec(description)[1])), /*#__PURE__*/SchemaGetter.transformOrFail((sym, options) => {
|
|
2865
3088
|
const key = globalThis.Symbol.keyFor(sym);
|
|
2866
3089
|
if (key !== undefined) {
|
|
2867
3090
|
return Effect.succeed(globalThis.String(sym));
|
|
2868
3091
|
}
|
|
2869
|
-
return Effect.fail(new SchemaIssue.Forbidden(
|
|
3092
|
+
return Effect.fail(new SchemaIssue.Forbidden({
|
|
2870
3093
|
message: "cannot serialize to string, Symbol is not registered"
|
|
2871
|
-
}));
|
|
3094
|
+
}, sym, options));
|
|
2872
3095
|
})));
|
|
2873
3096
|
/** @internal */
|
|
2874
3097
|
export function isStringSymbol(annotations) {
|
|
2875
3098
|
return isPattern(isStringSymbolRegExp, {
|
|
2876
3099
|
expected: "a string representing a symbol",
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
3100
|
+
representation: {
|
|
3101
|
+
id: "effect/schema/isStringSymbol",
|
|
3102
|
+
payload: null
|
|
2880
3103
|
},
|
|
3104
|
+
toJsonSchema: () => ({
|
|
3105
|
+
pattern: isStringSymbolRegExp.source
|
|
3106
|
+
}),
|
|
2881
3107
|
...annotations
|
|
2882
3108
|
});
|
|
2883
3109
|
}
|
|
@@ -2886,34 +3112,40 @@ export function collectIssues(checks, value, issues, ast, options) {
|
|
|
2886
3112
|
for (let i = 0; i < checks.length; i++) {
|
|
2887
3113
|
const check = checks[i];
|
|
2888
3114
|
if (check._tag === "FilterGroup") {
|
|
2889
|
-
collectIssues(check.checks, value, issues, ast, options);
|
|
3115
|
+
issues = collectIssues(check.checks, value, issues, ast, options);
|
|
3116
|
+
if (issues && (options.errors !== "all" || issues[issues.length - 1].filter.aborted)) {
|
|
3117
|
+
return issues;
|
|
3118
|
+
}
|
|
2890
3119
|
} else {
|
|
2891
3120
|
const issue = check.run(value, ast, options);
|
|
2892
3121
|
if (issue) {
|
|
2893
|
-
|
|
2894
|
-
if (
|
|
2895
|
-
|
|
3122
|
+
const filter = new SchemaIssue.Filter(check, issue, value, options);
|
|
3123
|
+
if (issues) issues.push(filter);else issues = [filter];
|
|
3124
|
+
if (options.errors !== "all" || check.aborted) {
|
|
3125
|
+
return issues;
|
|
2896
3126
|
}
|
|
2897
3127
|
}
|
|
2898
3128
|
}
|
|
2899
3129
|
}
|
|
3130
|
+
return issues;
|
|
2900
3131
|
}
|
|
2901
3132
|
/** @internal */
|
|
2902
3133
|
export function runChecks(checks, s) {
|
|
2903
|
-
const issues =
|
|
2904
|
-
collectIssues(checks, s, issues, unknown, {
|
|
3134
|
+
const issues = collectIssues(checks, s, undefined, unknown, {
|
|
2905
3135
|
errors: "all"
|
|
2906
3136
|
});
|
|
2907
|
-
if (
|
|
2908
|
-
const issue = new SchemaIssue.Composite(unknown,
|
|
3137
|
+
if (issues) {
|
|
3138
|
+
const issue = new SchemaIssue.Composite(unknown, issues);
|
|
2909
3139
|
return Result.fail(issue);
|
|
2910
3140
|
}
|
|
2911
3141
|
return Result.succeed(s);
|
|
2912
3142
|
}
|
|
2913
3143
|
/** @internal */
|
|
2914
|
-
export
|
|
2915
|
-
|
|
2916
|
-
|
|
3144
|
+
export function getConstructorDescriptor(ast) {
|
|
3145
|
+
if (!isDeclaration(ast)) return undefined;
|
|
3146
|
+
const getDescriptor = ast.annotations?.[InternalAnnotations.CONSTRUCTOR_ANNOTATION_KEY];
|
|
3147
|
+
return Predicate.isFunction(getDescriptor) ? getDescriptor(ast.typeParameters) : undefined;
|
|
3148
|
+
}
|
|
2917
3149
|
/**
|
|
2918
3150
|
* Returns all annotations from the AST node.
|
|
2919
3151
|
*
|
|
@@ -2925,12 +3157,12 @@ export const STRUCTURAL_ANNOTATION_KEY = "~structural";
|
|
|
2925
3157
|
*
|
|
2926
3158
|
* **Example** (Reading annotations)
|
|
2927
3159
|
*
|
|
2928
|
-
* ```ts
|
|
3160
|
+
* ```ts import.meta.vitest
|
|
2929
3161
|
* import { Schema, SchemaAST } from "effect"
|
|
2930
3162
|
*
|
|
2931
3163
|
* const schema = Schema.String.annotate({ title: "Name" })
|
|
2932
3164
|
* const annotations = SchemaAST.resolve(schema.ast)
|
|
2933
|
-
*
|
|
3165
|
+
* annotations?.title // => "Name"
|
|
2934
3166
|
* ```
|
|
2935
3167
|
*
|
|
2936
3168
|
* @see {@link resolveAt}
|
|
@@ -2990,6 +3222,66 @@ export const resolveTitle = InternalAnnotations.resolveTitle;
|
|
|
2990
3222
|
* @since 4.0.0
|
|
2991
3223
|
*/
|
|
2992
3224
|
export const resolveDescription = InternalAnnotations.resolveDescription;
|
|
3225
|
+
function isJsonLeaf(u) {
|
|
3226
|
+
return u === null || typeof u === "string" || typeof u === "boolean" || typeof u === "number" && globalThis.Number.isFinite(u);
|
|
3227
|
+
}
|
|
3228
|
+
function isStringTreeLeaf(u) {
|
|
3229
|
+
return u === undefined || typeof u === "string";
|
|
3230
|
+
}
|
|
3231
|
+
function isTree(u, isLeaf) {
|
|
3232
|
+
const cache = new WeakMap();
|
|
3233
|
+
const stack = [];
|
|
3234
|
+
outer: while (true) {
|
|
3235
|
+
if (typeof u !== "object" || u === null) {
|
|
3236
|
+
if (!isLeaf(u)) {
|
|
3237
|
+
return false;
|
|
3238
|
+
}
|
|
3239
|
+
} else {
|
|
3240
|
+
const value = u;
|
|
3241
|
+
const cached = cache.get(value);
|
|
3242
|
+
// `false` marks a node on the current path, while `true` marks a fully
|
|
3243
|
+
// validated node that can be safely reused by a DAG.
|
|
3244
|
+
if (cached === false) {
|
|
3245
|
+
return false;
|
|
3246
|
+
}
|
|
3247
|
+
if (cached === undefined) {
|
|
3248
|
+
const isArray = Array.isArray(value);
|
|
3249
|
+
if (!isArray) {
|
|
3250
|
+
const prototype = Object.getPrototypeOf(value);
|
|
3251
|
+
// A plain object from another realm has a different Object.prototype,
|
|
3252
|
+
// but that prototype still has a null prototype.
|
|
3253
|
+
if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {
|
|
3254
|
+
return false;
|
|
3255
|
+
}
|
|
3256
|
+
}
|
|
3257
|
+
cache.set(value, false);
|
|
3258
|
+
stack.push({
|
|
3259
|
+
value,
|
|
3260
|
+
keys: isArray ? value.length : Object.keys(value),
|
|
3261
|
+
index: 0
|
|
3262
|
+
});
|
|
3263
|
+
}
|
|
3264
|
+
}
|
|
3265
|
+
while (stack.length > 0) {
|
|
3266
|
+
const frame = stack[stack.length - 1];
|
|
3267
|
+
const keys = frame.keys;
|
|
3268
|
+
if (typeof keys === "number") {
|
|
3269
|
+
if (frame.index < keys) {
|
|
3270
|
+
// A sparse slot is read as `undefined`; the leaf predicate determines
|
|
3271
|
+
// whether that is valid for the current tree.
|
|
3272
|
+
u = frame.value[frame.index++];
|
|
3273
|
+
continue outer;
|
|
3274
|
+
}
|
|
3275
|
+
} else if (frame.index < keys.length) {
|
|
3276
|
+
u = frame.value[keys[frame.index++]];
|
|
3277
|
+
continue outer;
|
|
3278
|
+
}
|
|
3279
|
+
cache.set(frame.value, true);
|
|
3280
|
+
stack.pop();
|
|
3281
|
+
}
|
|
3282
|
+
return true;
|
|
3283
|
+
}
|
|
3284
|
+
}
|
|
2993
3285
|
/**
|
|
2994
3286
|
* Returns true if the value is a JSON value.
|
|
2995
3287
|
*
|
|
@@ -2998,76 +3290,30 @@ export const resolveDescription = InternalAnnotations.resolveDescription;
|
|
|
2998
3290
|
* @internal
|
|
2999
3291
|
*/
|
|
3000
3292
|
export function isJson(u) {
|
|
3001
|
-
|
|
3002
|
-
// one being visited. A hit here means we looped back to an ancestor — a
|
|
3003
|
-
// real cycle, not a DAG — so the value is not JSON.
|
|
3004
|
-
const onPath = new Set();
|
|
3005
|
-
// `validated` memoizes subtrees we've already fully checked. Without it, a
|
|
3006
|
-
// diamond-shaped DAG (same node reached through multiple parents) would be
|
|
3007
|
-
// re-traversed once per parent, which is exponential in the nesting depth.
|
|
3008
|
-
const validated = new Set();
|
|
3009
|
-
return recur(u);
|
|
3010
|
-
function recur(u) {
|
|
3011
|
-
if (u === null || typeof u === "string" || typeof u === "boolean") {
|
|
3012
|
-
return true;
|
|
3013
|
-
}
|
|
3014
|
-
if (typeof u === "number") {
|
|
3015
|
-
return globalThis.Number.isFinite(u);
|
|
3016
|
-
}
|
|
3017
|
-
if (typeof u !== "object" || u === undefined) {
|
|
3018
|
-
return false;
|
|
3019
|
-
}
|
|
3020
|
-
if (onPath.has(u)) {
|
|
3021
|
-
return false;
|
|
3022
|
-
}
|
|
3023
|
-
if (validated.has(u)) {
|
|
3024
|
-
return true;
|
|
3025
|
-
}
|
|
3026
|
-
const isArray = Array.isArray(u);
|
|
3027
|
-
if (!isArray) {
|
|
3028
|
-
const prototype = Object.getPrototypeOf(u);
|
|
3029
|
-
if (prototype !== null && Object.getPrototypeOf(prototype) !== null) {
|
|
3030
|
-
return false;
|
|
3031
|
-
}
|
|
3032
|
-
}
|
|
3033
|
-
onPath.add(u);
|
|
3034
|
-
const ok = isArray ? u.every(recur) : Object.keys(u).every(key => recur(u[key]));
|
|
3035
|
-
// Pop on exit so siblings reaching the same node via a different path
|
|
3036
|
-
// don't see it as an ancestor (that would reject valid DAGs).
|
|
3037
|
-
onPath.delete(u);
|
|
3038
|
-
if (ok) {
|
|
3039
|
-
validated.add(u);
|
|
3040
|
-
}
|
|
3041
|
-
return ok;
|
|
3042
|
-
}
|
|
3293
|
+
return isTree(u, isJsonLeaf);
|
|
3043
3294
|
}
|
|
3044
3295
|
/** @internal */
|
|
3045
|
-
export const Json = /*#__PURE__*/new Declaration([], () => (input, ast) => isJson(input) ?
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
generation: {
|
|
3050
|
-
runtime: `Schema.Json`,
|
|
3051
|
-
Type: `Schema.Json`
|
|
3296
|
+
export const Json = /*#__PURE__*/new Declaration([], () => (input, ast, options) => isJson(input) ? InternalParser.sameExit : Effect.fail(new SchemaIssue.InvalidType(ast, input, options)), {
|
|
3297
|
+
representation: {
|
|
3298
|
+
id: "effect/schema/Json",
|
|
3299
|
+
payload: null
|
|
3052
3300
|
},
|
|
3053
3301
|
expected: "JSON value",
|
|
3054
|
-
toCodecJson: () =>
|
|
3302
|
+
toCodecJson: () => undefined,
|
|
3303
|
+
toCodecStringTree: () => unknownToStringTree,
|
|
3055
3304
|
toArbitrary: () => fc => fc.jsonValue()
|
|
3056
3305
|
});
|
|
3057
3306
|
/** @internal */
|
|
3058
3307
|
export const MutableJson = /*#__PURE__*/annotate(Json, {
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
generation: {
|
|
3063
|
-
runtime: `Schema.MutableJson`,
|
|
3064
|
-
Type: `Schema.MutableJson`
|
|
3308
|
+
representation: {
|
|
3309
|
+
id: "effect/schema/MutableJson",
|
|
3310
|
+
payload: null
|
|
3065
3311
|
}
|
|
3066
3312
|
});
|
|
3067
3313
|
/** @internal */
|
|
3068
|
-
export const unknownToNull = /*#__PURE__*/new Link(null_, /*#__PURE__*/new SchemaTransformation.Transformation(/*#__PURE__*/SchemaGetter.passthrough(), /*#__PURE__*/SchemaGetter.transform(() => null)));
|
|
3069
|
-
/** @internal */
|
|
3070
3314
|
export const unknownToJson = /*#__PURE__*/new Link(Json, /*#__PURE__*/SchemaTransformation.passthrough());
|
|
3315
|
+
/** @internal */
|
|
3316
|
+
export const objectKeywordToJson = /*#__PURE__*/new Link(/*#__PURE__*/new Union([/*#__PURE__*/new Arrays(false, [], [Json]), /*#__PURE__*/new Objects([], [/*#__PURE__*/new IndexSignature(string, Json)])], "anyOf"), /*#__PURE__*/SchemaTransformation.passthrough());
|
|
3071
3317
|
/**
|
|
3072
3318
|
* Returns true if the value is a StringTree value.
|
|
3073
3319
|
*
|
|
@@ -3076,27 +3322,11 @@ export const unknownToJson = /*#__PURE__*/new Link(Json, /*#__PURE__*/SchemaTran
|
|
|
3076
3322
|
* @internal
|
|
3077
3323
|
*/
|
|
3078
3324
|
export function isStringTree(u) {
|
|
3079
|
-
|
|
3080
|
-
return recur(u);
|
|
3081
|
-
function recur(u) {
|
|
3082
|
-
if (u === undefined || typeof u === "string") {
|
|
3083
|
-
return true;
|
|
3084
|
-
}
|
|
3085
|
-
if (typeof u !== "object" || u === null) {
|
|
3086
|
-
return false;
|
|
3087
|
-
}
|
|
3088
|
-
if (seen.has(u)) {
|
|
3089
|
-
return false;
|
|
3090
|
-
}
|
|
3091
|
-
seen.add(u);
|
|
3092
|
-
if (Array.isArray(u)) {
|
|
3093
|
-
return u.every(recur);
|
|
3094
|
-
}
|
|
3095
|
-
return Object.keys(u).every(key => recur(u[key]));
|
|
3096
|
-
}
|
|
3325
|
+
return isTree(u, isStringTreeLeaf);
|
|
3097
3326
|
}
|
|
3098
|
-
const StringTree = /*#__PURE__*/new Declaration([], () => (input, ast) => isStringTree(input) ?
|
|
3099
|
-
expected: "StringTree"
|
|
3327
|
+
const StringTree = /*#__PURE__*/new Declaration([], () => (input, ast, options) => isStringTree(input) ? InternalParser.sameExit : Effect.fail(new SchemaIssue.InvalidType(ast, input, options)), {
|
|
3328
|
+
expected: "StringTree",
|
|
3329
|
+
toCodecStringTree: () => undefined
|
|
3100
3330
|
});
|
|
3101
3331
|
/** @internal */
|
|
3102
3332
|
export const unknownToStringTree = /*#__PURE__*/new Link(StringTree, /*#__PURE__*/SchemaTransformation.passthrough());
|