effect 4.0.0-beta.99 → 4.0.0-rc.109
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 +395 -0
- package/CLAUDE.md +395 -0
- package/README.md +19 -23
- 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/40_sql/10_basics.ts +175 -0
- package/ai-docs/src/40_sql/index.md +6 -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 +118 -0
- package/ai-docs/src/51_http-server/20_testing.ts +100 -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 +107 -0
- package/ai-docs/src/51_http-server/fixtures/domain/User.ts +21 -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 +37 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +80 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users.ts +183 -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 +160 -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 +160 -277
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +179 -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 +24 -39
- 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 +3157 -3360
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +1457 -1574
- 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 +52 -28
- package/dist/ErrorReporter.d.ts.map +1 -1
- package/dist/ErrorReporter.js +51 -27
- 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 +362 -263
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +203 -181
- 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 +219 -468
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +209 -454
- 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 +254 -114
- 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/internal/uuid.d.ts +3 -0
- package/dist/internal/uuid.d.ts.map +1 -0
- package/dist/internal/uuid.js +30 -0
- package/dist/internal/uuid.js.map +1 -0
- 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 +58 -29
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +79 -24
- 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 +116 -0
- package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/McpProtocol.js +32 -0
- package/dist/unstable/ai/McpProtocol.js.map +1 -0
- package/dist/unstable/ai/McpSchema.d.ts +378 -223
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +135 -87
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +89 -100
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +1037 -361
- 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/mcpCore.d.ts +7 -0
- package/dist/unstable/ai/internal/mcpCore.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpCore.js +152 -0
- package/dist/unstable/ai/internal/mcpCore.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.js +259 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.js +279 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.js +281 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol.js +153 -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 +47 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.d.ts +1185 -0
- package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.js +404 -0
- package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.js.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.d.ts +825 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.js +138 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.js.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.d.ts +1462 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.js +309 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.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.d.ts +3 -1
- package/dist/unstable/cluster/ClusterError.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterError.js +10 -8
- 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 +43 -21
- 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 +4 -4
- package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityResource.js +14 -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.d.ts +2 -2
- package/dist/unstable/cluster/K8sHttpClient.d.ts.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js +8 -0
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/K8sTypes.d.ts +2327 -0
- package/dist/unstable/cluster/K8sTypes.d.ts.map +1 -0
- package/dist/unstable/cluster/K8sTypes.js +29 -0
- package/dist/unstable/cluster/K8sTypes.js.map +1 -0
- 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 +66 -22
- package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +56 -13
- 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 +293 -46
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +57 -5
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js +11 -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 +21 -9
- package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +130 -43
- 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.d.ts +4 -0
- package/dist/unstable/cluster/index.d.ts.map +1 -1
- package/dist/unstable/cluster/index.js +4 -0
- package/dist/unstable/cluster/index.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +33 -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 +8 -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 +30 -17
- package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventJournal.js +30 -35
- 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 +17 -8
- 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 +10 -0
- package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.js +4 -7
- 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 +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 +14 -15
- 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 +79 -80
- 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/HttpStatus.d.ts +99 -0
- package/dist/unstable/http/HttpStatus.d.ts.map +1 -0
- package/dist/unstable/http/HttpStatus.js +91 -0
- package/dist/unstable/http/HttpStatus.js.map +1 -0
- 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 +5 -1
- package/dist/unstable/http/index.d.ts.map +1 -1
- package/dist/unstable/http/index.js +5 -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 +227 -71
- package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.js +176 -69
- 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 +97 -86
- 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 +55 -43
- 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 +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 +41 -23
- 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 +2 -2
- 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 +178 -97
- 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 +23 -18
- 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 +66 -51
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/Model.js +39 -52
- 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 +11 -7
- 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 +33 -26
- 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 -16
- 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 +336 -405
- package/src/Cron.ts +271 -219
- package/src/Crypto.ts +33 -63
- 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 +3241 -3410
- package/src/Encoding.ts +22 -40
- package/src/Equal.ts +59 -41
- package/src/Equivalence.ts +103 -105
- package/src/ErrorReporter.ts +52 -28
- 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 +369 -268
- package/src/LayerMap.ts +49 -29
- package/src/LayerRef.ts +6 -2
- package/src/LogLevel.ts +114 -214
- package/src/Logger.ts +349 -701
- 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 +319 -149
- 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/internal/uuid.ts +51 -0
- package/src/testing/FastCheck.ts +8 -7
- package/src/testing/TestClock.ts +103 -36
- 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 +137 -0
- package/src/unstable/ai/McpSchema.ts +199 -100
- package/src/unstable/ai/McpServer.ts +1360 -455
- 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/mcpCore.ts +457 -0
- package/src/unstable/ai/internal/mcpProtocol/v2024_11_05.ts +321 -0
- package/src/unstable/ai/internal/mcpProtocol/v2025_03_26.ts +347 -0
- package/src/unstable/ai/internal/mcpProtocol/v2025_06_18.ts +361 -0
- package/src/unstable/ai/internal/mcpProtocol.ts +336 -0
- package/src/unstable/ai/internal/mcpProtocolRegistry.ts +102 -0
- package/src/unstable/ai/internal/mcpSchema/v2024_11_05.ts +521 -0
- package/src/unstable/ai/internal/mcpSchema/v2025_03_26.ts +204 -0
- package/src/unstable/ai/internal/mcpSchema/v2025_06_18.ts +404 -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 +10 -8
- package/src/unstable/cluster/ClusterSchema.ts +8 -8
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +65 -39
- package/src/unstable/cluster/Entity.ts +23 -19
- package/src/unstable/cluster/EntityProxy.ts +16 -7
- package/src/unstable/cluster/EntityResource.ts +5 -5
- package/src/unstable/cluster/Envelope.ts +5 -4
- package/src/unstable/cluster/HttpRunner.ts +6 -4
- package/src/unstable/cluster/K8sHttpClient.ts +2 -2
- package/src/unstable/cluster/K8sTypes.ts +2467 -0
- package/src/unstable/cluster/Message.ts +9 -9
- package/src/unstable/cluster/MessageStorage.ts +106 -33
- 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 +360 -65
- package/src/unstable/cluster/ShardingConfig.ts +46 -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 +212 -60
- package/src/unstable/cluster/SqlRunnerStorage.ts +223 -133
- package/src/unstable/cluster/index.ts +5 -0
- package/src/unstable/cluster/internal/entityManager.ts +72 -27
- package/src/unstable/cluster/internal/entityReaper.ts +2 -3
- package/src/unstable/cluster/internal/resourceMap.ts +13 -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 +33 -25
- 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 +16 -8
- package/src/unstable/eventlog/EventLogServerUnencrypted.ts +15 -7
- package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
- package/src/unstable/eventlog/SqlEventJournal.ts +9 -7
- 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 +4 -2
- 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 +27 -26
- 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 +110 -102
- 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/HttpStatus.ts +100 -0
- 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 +6 -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 +362 -73
- 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 +129 -108
- 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 +170 -56
- 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/reactivity/Reactivity.ts +1 -1
- package/src/unstable/rpc/Rpc.ts +35 -33
- package/src/unstable/rpc/RpcClient.ts +66 -30
- package/src/unstable/rpc/RpcClientError.ts +2 -2
- package/src/unstable/rpc/RpcGroup.ts +9 -9
- 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 +168 -69
- package/src/unstable/rpc/RpcServer.ts +28 -22
- package/src/unstable/rpc/RpcWorker.ts +5 -5
- package/src/unstable/schema/Model.ts +60 -58
- 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 +71 -60
- package/src/unstable/sql/SqlError.ts +15 -15
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlResolver.ts +44 -33
- 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
|
@@ -1,3031 +1,478 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* `Representation` is not the original `Schema` object; it is a JSON-friendly
|
|
4
|
-
* description of the schema's types, fields, unions, checks, annotations, and
|
|
5
|
-
* references.
|
|
6
|
-
*
|
|
7
|
-
* This module defines the representation node types, document types, and
|
|
8
|
-
* codecs used to validate those documents. It can build representation
|
|
9
|
-
* documents from schema ASTs, turn representation documents back into schemas,
|
|
10
|
-
* convert them to and from JSON Schema documents, and generate TypeScript code
|
|
11
|
-
* artifacts for schema definitions.
|
|
2
|
+
* Open, compiler-extensible representation of Effect schemas.
|
|
12
3
|
*
|
|
13
4
|
* @since 4.0.0
|
|
14
5
|
*/
|
|
15
|
-
import * as
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import * as
|
|
19
|
-
import
|
|
20
|
-
import
|
|
6
|
+
import * as InternalRecord from "./internal/record.js";
|
|
7
|
+
import * as InternalFromJsonSchemaDocument from "./internal/schema/fromJsonSchemaDocument.js";
|
|
8
|
+
import * as InternalFromRepresentation from "./internal/schema/fromRepresentation.js";
|
|
9
|
+
import * as InternalSchema from "./internal/schema/schema.js";
|
|
10
|
+
import * as InternalToCodeDocument from "./internal/schema/toCodeDocument.js";
|
|
11
|
+
import * as InternalToJsonSchemaDocument from "./internal/schema/toJsonSchemaDocument.js";
|
|
12
|
+
import * as InternalToRepresentation from "./internal/schema/toRepresentation.js";
|
|
21
13
|
import * as Option from "./Option.js";
|
|
22
|
-
import * as Predicate from "./Predicate.js";
|
|
23
|
-
import * as Rec from "./Record.js";
|
|
24
14
|
import * as Schema from "./Schema.js";
|
|
25
15
|
import * as SchemaAST from "./SchemaAST.js";
|
|
26
16
|
import * as SchemaGetter from "./SchemaGetter.js";
|
|
27
|
-
// -----------------------------------------------------------------------------
|
|
28
|
-
// schemas
|
|
29
|
-
// -----------------------------------------------------------------------------
|
|
30
|
-
const Representation$ref = /*#__PURE__*/Schema.suspend(() => $Representation);
|
|
31
|
-
const toJsonAnnotationsBlacklist = /*#__PURE__*/new Set([...InternalRepresentation.fromASTBlacklist, "expected", "contentMediaType", "contentSchema"]);
|
|
32
|
-
/**
|
|
33
|
-
* Schema for {@link PrimitiveTree}.
|
|
34
|
-
*
|
|
35
|
-
* **When to use**
|
|
36
|
-
*
|
|
37
|
-
* Use to validate recursive annotation metadata trees whose leaves are `null`,
|
|
38
|
-
* `number`, `boolean`, `bigint`, `symbol`, or `string`.
|
|
39
|
-
*
|
|
40
|
-
* @see {@link PrimitiveTree} for the recursive tree type accepted by this codec
|
|
41
|
-
* @see {@link $Annotations} for the annotation codec that filters values through this codec
|
|
42
|
-
*
|
|
43
|
-
* @category schemas
|
|
44
|
-
* @since 4.0.0
|
|
45
|
-
*/
|
|
46
|
-
export const $PrimitiveTree = /*#__PURE__*/Schema.Tree(/*#__PURE__*/Schema.Union([Schema.Null, Schema.Number,
|
|
47
|
-
// allows NaN, Infinity, -Infinity
|
|
48
|
-
Schema.Boolean, Schema.BigInt, Schema.Symbol, Schema.String]));
|
|
49
|
-
const isPrimitiveTree = /*#__PURE__*/Schema.is($PrimitiveTree);
|
|
50
|
-
/**
|
|
51
|
-
* Schema for serializing public `Schema.Annotations.Annotations` values. It
|
|
52
|
-
* filters out internal annotation keys and non-primitive values during
|
|
53
|
-
* encoding.
|
|
54
|
-
*
|
|
55
|
-
* **When to use**
|
|
56
|
-
*
|
|
57
|
-
* Use to serialize schema annotations in representation schemas while retaining
|
|
58
|
-
* only primitive-tree metadata.
|
|
59
|
-
*
|
|
60
|
-
* **Details**
|
|
61
|
-
*
|
|
62
|
-
* Decoding is passthrough. Encoding removes internal annotation keys and values
|
|
63
|
-
* that are not accepted by `$PrimitiveTree`.
|
|
64
|
-
*
|
|
65
|
-
* @see {@link $PrimitiveTree} for the codec used to filter annotation values
|
|
66
|
-
*
|
|
67
|
-
* @category schemas
|
|
68
|
-
* @since 4.0.0
|
|
69
|
-
*/
|
|
70
|
-
export const $Annotations = /*#__PURE__*/Schema.Record(Schema.String, Schema.Unknown).pipe(Schema.encodeTo(Schema.Record(Schema.String, $PrimitiveTree), {
|
|
71
|
-
decode: SchemaGetter.passthrough(),
|
|
72
|
-
encode: SchemaGetter.transformOptional(Option.flatMap(r => {
|
|
73
|
-
const out = {};
|
|
74
|
-
for (const [k, v] of Object.entries(r)) {
|
|
75
|
-
if (!toJsonAnnotationsBlacklist.has(k) && isPrimitiveTree(v)) {
|
|
76
|
-
out[k] = v;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return Rec.isEmptyRecord(out) ? Option.none() : Option.some(out);
|
|
80
|
-
}))
|
|
81
|
-
})).annotate({
|
|
82
|
-
identifier: "Annotations"
|
|
83
|
-
});
|
|
84
17
|
/**
|
|
85
|
-
*
|
|
18
|
+
* Creates a declaration reviver while inferring its payload type from `payloadSchema`.
|
|
86
19
|
*
|
|
87
|
-
* @category
|
|
20
|
+
* @category constructors
|
|
88
21
|
* @since 4.0.0
|
|
89
22
|
*/
|
|
90
|
-
export const
|
|
91
|
-
_tag: Schema.tag("Null"),
|
|
92
|
-
annotations: Schema.optional($Annotations)
|
|
93
|
-
}).annotate({
|
|
94
|
-
identifier: "Null"
|
|
95
|
-
});
|
|
23
|
+
export const makeDeclarationReviver = InternalSchema.makeDeclarationReviver;
|
|
96
24
|
/**
|
|
97
|
-
*
|
|
25
|
+
* Creates a filter reviver while inferring its payload type from `payloadSchema`.
|
|
98
26
|
*
|
|
99
|
-
* @category
|
|
27
|
+
* @category constructors
|
|
100
28
|
* @since 4.0.0
|
|
101
29
|
*/
|
|
102
|
-
export const
|
|
103
|
-
_tag: Schema.tag("Undefined"),
|
|
104
|
-
annotations: Schema.optional($Annotations)
|
|
105
|
-
}).annotate({
|
|
106
|
-
identifier: "Undefined"
|
|
107
|
-
});
|
|
30
|
+
export const makeFilterReviver = InternalSchema.makeFilterReviver;
|
|
108
31
|
/**
|
|
109
|
-
*
|
|
32
|
+
* Creates a filter group reviver while inferring its payload type from `payloadSchema`.
|
|
110
33
|
*
|
|
111
|
-
* @category
|
|
34
|
+
* @category constructors
|
|
112
35
|
* @since 4.0.0
|
|
113
36
|
*/
|
|
114
|
-
export const
|
|
115
|
-
_tag: Schema.tag("Void"),
|
|
116
|
-
annotations: Schema.optional($Annotations)
|
|
117
|
-
}).annotate({
|
|
118
|
-
identifier: "Void"
|
|
119
|
-
});
|
|
37
|
+
export const makeFilterGroupReviver = InternalSchema.makeFilterGroupReviver;
|
|
120
38
|
/**
|
|
121
|
-
*
|
|
39
|
+
* Creates generated runtime and TypeScript source strings for a schema.
|
|
122
40
|
*
|
|
123
|
-
* @category
|
|
41
|
+
* @category constructors
|
|
124
42
|
* @since 4.0.0
|
|
125
43
|
*/
|
|
126
|
-
export const
|
|
127
|
-
_tag: Schema.tag("Never"),
|
|
128
|
-
annotations: Schema.optional($Annotations)
|
|
129
|
-
}).annotate({
|
|
130
|
-
identifier: "Never"
|
|
131
|
-
});
|
|
44
|
+
export const makeCode = InternalToCodeDocument.makeCode;
|
|
132
45
|
/**
|
|
133
|
-
*
|
|
46
|
+
* Lowers the encoded side of an AST to a live representation document.
|
|
134
47
|
*
|
|
135
|
-
*
|
|
136
|
-
* @since 4.0.0
|
|
137
|
-
*/
|
|
138
|
-
export const $Unknown = /*#__PURE__*/Schema.Struct({
|
|
139
|
-
_tag: Schema.tag("Unknown"),
|
|
140
|
-
annotations: Schema.optional($Annotations)
|
|
141
|
-
}).annotate({
|
|
142
|
-
identifier: "Unknown"
|
|
143
|
-
});
|
|
144
|
-
/**
|
|
145
|
-
* Schema for the {@link Any} representation node.
|
|
48
|
+
* **Details**
|
|
146
49
|
*
|
|
147
|
-
*
|
|
148
|
-
* @since 4.0.0
|
|
149
|
-
*/
|
|
150
|
-
export const $Any = /*#__PURE__*/Schema.Struct({
|
|
151
|
-
_tag: Schema.tag("Any"),
|
|
152
|
-
annotations: Schema.optional($Annotations)
|
|
153
|
-
}).annotate({
|
|
154
|
-
identifier: "Any"
|
|
155
|
-
});
|
|
156
|
-
const $IsStringFinite = /*#__PURE__*/Schema.Struct({
|
|
157
|
-
_tag: Schema.tag("isStringFinite"),
|
|
158
|
-
regExp: Schema.RegExp
|
|
159
|
-
}).annotate({
|
|
160
|
-
identifier: "IsStringFinite"
|
|
161
|
-
});
|
|
162
|
-
const $IsStringBigInt = /*#__PURE__*/Schema.Struct({
|
|
163
|
-
_tag: Schema.tag("isStringBigInt"),
|
|
164
|
-
regExp: Schema.RegExp
|
|
165
|
-
}).annotate({
|
|
166
|
-
identifier: "IsStringBigInt"
|
|
167
|
-
});
|
|
168
|
-
const $IsStringSymbol = /*#__PURE__*/Schema.Struct({
|
|
169
|
-
_tag: Schema.tag("isStringSymbol"),
|
|
170
|
-
regExp: Schema.RegExp
|
|
171
|
-
}).annotate({
|
|
172
|
-
identifier: "IsStringSymbol"
|
|
173
|
-
});
|
|
174
|
-
const $IsTrimmed = /*#__PURE__*/Schema.Struct({
|
|
175
|
-
_tag: Schema.tag("isTrimmed"),
|
|
176
|
-
regExp: Schema.RegExp
|
|
177
|
-
}).annotate({
|
|
178
|
-
identifier: "IsTrimmed"
|
|
179
|
-
});
|
|
180
|
-
const $IsUUID = /*#__PURE__*/Schema.Struct({
|
|
181
|
-
_tag: Schema.tag("isUUID"),
|
|
182
|
-
regExp: Schema.RegExp,
|
|
183
|
-
version: Schema.UndefinedOr(Schema.Literals([1, 2, 3, 4, 5, 6, 7, 8]))
|
|
184
|
-
}).annotate({
|
|
185
|
-
identifier: "IsUUID"
|
|
186
|
-
});
|
|
187
|
-
const $IsGUID = /*#__PURE__*/Schema.Struct({
|
|
188
|
-
_tag: Schema.tag("isGUID"),
|
|
189
|
-
regExp: Schema.RegExp
|
|
190
|
-
}).annotate({
|
|
191
|
-
identifier: "IsGUID"
|
|
192
|
-
});
|
|
193
|
-
const $IsULID = /*#__PURE__*/Schema.Struct({
|
|
194
|
-
_tag: Schema.tag("isULID"),
|
|
195
|
-
regExp: Schema.RegExp
|
|
196
|
-
}).annotate({
|
|
197
|
-
identifier: "IsULID"
|
|
198
|
-
});
|
|
199
|
-
const $IsBase64 = /*#__PURE__*/Schema.Struct({
|
|
200
|
-
_tag: Schema.tag("isBase64"),
|
|
201
|
-
regExp: Schema.RegExp
|
|
202
|
-
}).annotate({
|
|
203
|
-
identifier: "IsBase64"
|
|
204
|
-
});
|
|
205
|
-
const $IsBase64Url = /*#__PURE__*/Schema.Struct({
|
|
206
|
-
_tag: Schema.tag("isBase64Url"),
|
|
207
|
-
regExp: Schema.RegExp
|
|
208
|
-
}).annotate({
|
|
209
|
-
identifier: "IsBase64Url"
|
|
210
|
-
});
|
|
211
|
-
const $IsStartsWith = /*#__PURE__*/Schema.Struct({
|
|
212
|
-
_tag: Schema.tag("isStartsWith"),
|
|
213
|
-
startsWith: Schema.String,
|
|
214
|
-
regExp: Schema.RegExp
|
|
215
|
-
}).annotate({
|
|
216
|
-
identifier: "IsStartsWith"
|
|
217
|
-
});
|
|
218
|
-
const $IsEndsWith = /*#__PURE__*/Schema.Struct({
|
|
219
|
-
_tag: Schema.tag("isEndsWith"),
|
|
220
|
-
endsWith: Schema.String,
|
|
221
|
-
regExp: Schema.RegExp
|
|
222
|
-
}).annotate({
|
|
223
|
-
identifier: "IsEndsWith"
|
|
224
|
-
});
|
|
225
|
-
const $IsIncludes = /*#__PURE__*/Schema.Struct({
|
|
226
|
-
_tag: Schema.tag("isIncludes"),
|
|
227
|
-
includes: Schema.String,
|
|
228
|
-
regExp: Schema.RegExp
|
|
229
|
-
}).annotate({
|
|
230
|
-
identifier: "IsIncludes"
|
|
231
|
-
});
|
|
232
|
-
const $IsUppercased = /*#__PURE__*/Schema.Struct({
|
|
233
|
-
_tag: Schema.tag("isUppercased"),
|
|
234
|
-
regExp: Schema.RegExp
|
|
235
|
-
}).annotate({
|
|
236
|
-
identifier: "IsUppercased"
|
|
237
|
-
});
|
|
238
|
-
const $IsLowercased = /*#__PURE__*/Schema.Struct({
|
|
239
|
-
_tag: Schema.tag("isLowercased"),
|
|
240
|
-
regExp: Schema.RegExp
|
|
241
|
-
}).annotate({
|
|
242
|
-
identifier: "IsLowercased"
|
|
243
|
-
});
|
|
244
|
-
const $IsCapitalized = /*#__PURE__*/Schema.Struct({
|
|
245
|
-
_tag: Schema.tag("isCapitalized"),
|
|
246
|
-
regExp: Schema.RegExp
|
|
247
|
-
}).annotate({
|
|
248
|
-
identifier: "IsCapitalized"
|
|
249
|
-
});
|
|
250
|
-
const $IsUncapitalized = /*#__PURE__*/Schema.Struct({
|
|
251
|
-
_tag: Schema.tag("isUncapitalized"),
|
|
252
|
-
regExp: Schema.RegExp
|
|
253
|
-
}).annotate({
|
|
254
|
-
identifier: "IsUncapitalized"
|
|
255
|
-
});
|
|
256
|
-
const NonNegativeInt = /*#__PURE__*/Schema.Int.check(/*#__PURE__*/Schema.isGreaterThanOrEqualTo(0));
|
|
257
|
-
const $IsMinLength = /*#__PURE__*/Schema.Struct({
|
|
258
|
-
_tag: Schema.tag("isMinLength"),
|
|
259
|
-
minLength: NonNegativeInt
|
|
260
|
-
}).annotate({
|
|
261
|
-
identifier: "IsMinLength"
|
|
262
|
-
});
|
|
263
|
-
const $IsMaxLength = /*#__PURE__*/Schema.Struct({
|
|
264
|
-
_tag: Schema.tag("isMaxLength"),
|
|
265
|
-
maxLength: NonNegativeInt
|
|
266
|
-
}).annotate({
|
|
267
|
-
identifier: "IsMaxLength"
|
|
268
|
-
});
|
|
269
|
-
const $IsLengthBetween = /*#__PURE__*/Schema.Struct({
|
|
270
|
-
_tag: Schema.tag("isLengthBetween"),
|
|
271
|
-
minimum: NonNegativeInt,
|
|
272
|
-
maximum: NonNegativeInt
|
|
273
|
-
}).annotate({
|
|
274
|
-
identifier: "IsLengthBetween"
|
|
275
|
-
});
|
|
276
|
-
const $IsPattern = /*#__PURE__*/Schema.Struct({
|
|
277
|
-
_tag: Schema.tag("isPattern"),
|
|
278
|
-
regExp: Schema.RegExp
|
|
279
|
-
}).annotate({
|
|
280
|
-
identifier: "IsPattern"
|
|
281
|
-
});
|
|
282
|
-
/**
|
|
283
|
-
* Schema for {@link StringMeta}.
|
|
50
|
+
* Apply `SchemaAST.toType` to the AST first to lower its type side instead.
|
|
284
51
|
*
|
|
285
|
-
* @category
|
|
52
|
+
* @category constructors
|
|
286
53
|
* @since 4.0.0
|
|
287
54
|
*/
|
|
288
|
-
export
|
|
289
|
-
|
|
290
|
-
});
|
|
291
|
-
function makeCheck(meta, identifier) {
|
|
292
|
-
const Check$ref = Schema.suspend(() => Check);
|
|
293
|
-
const Check = Schema.Union([Schema.Struct({
|
|
294
|
-
_tag: Schema.tag("Filter"),
|
|
295
|
-
annotations: Schema.optional($Annotations),
|
|
296
|
-
meta
|
|
297
|
-
}).annotate({
|
|
298
|
-
identifier: `${identifier}Filter`
|
|
299
|
-
}), Schema.Struct({
|
|
300
|
-
_tag: Schema.tag("FilterGroup"),
|
|
301
|
-
annotations: Schema.optional($Annotations),
|
|
302
|
-
checks: Schema.NonEmptyArray(Check$ref)
|
|
303
|
-
}).annotate({
|
|
304
|
-
identifier: `${identifier}FilterGroup`
|
|
305
|
-
})]).annotate({
|
|
306
|
-
identifier: `${identifier}Check`
|
|
307
|
-
});
|
|
308
|
-
return Check;
|
|
55
|
+
export function toRepresentation(ast) {
|
|
56
|
+
return InternalToRepresentation.toRepresentation(ast);
|
|
309
57
|
}
|
|
310
58
|
/**
|
|
311
|
-
*
|
|
59
|
+
* Lowers one or more AST encoded sides in a shared reference environment.
|
|
312
60
|
*
|
|
313
|
-
*
|
|
314
|
-
* @since 4.0.0
|
|
315
|
-
*/
|
|
316
|
-
export const $String = /*#__PURE__*/Schema.Struct({
|
|
317
|
-
_tag: Schema.tag("String"),
|
|
318
|
-
annotations: Schema.optional($Annotations),
|
|
319
|
-
checks: Schema.Array(makeCheck($StringMeta, "String")),
|
|
320
|
-
contentMediaType: Schema.optional(Schema.String),
|
|
321
|
-
contentSchema: Schema.optional(Representation$ref)
|
|
322
|
-
}).annotate({
|
|
323
|
-
identifier: "String"
|
|
324
|
-
});
|
|
325
|
-
const $IsInt = /*#__PURE__*/Schema.Struct({
|
|
326
|
-
_tag: Schema.tag("isInt")
|
|
327
|
-
}).annotate({
|
|
328
|
-
identifier: "IsInt"
|
|
329
|
-
});
|
|
330
|
-
const $IsMultipleOf = /*#__PURE__*/Schema.Struct({
|
|
331
|
-
_tag: Schema.tag("isMultipleOf"),
|
|
332
|
-
divisor: Schema.Finite
|
|
333
|
-
}).annotate({
|
|
334
|
-
identifier: "IsMultipleOf"
|
|
335
|
-
});
|
|
336
|
-
const $IsFinite = /*#__PURE__*/Schema.Struct({
|
|
337
|
-
_tag: Schema.tag("isFinite")
|
|
338
|
-
}).annotate({
|
|
339
|
-
identifier: "IsFinite"
|
|
340
|
-
});
|
|
341
|
-
const $IsGreaterThan = /*#__PURE__*/Schema.Struct({
|
|
342
|
-
_tag: Schema.tag("isGreaterThan"),
|
|
343
|
-
exclusiveMinimum: Schema.Finite
|
|
344
|
-
}).annotate({
|
|
345
|
-
identifier: "IsGreaterThan"
|
|
346
|
-
});
|
|
347
|
-
const $IsGreaterThanOrEqualTo = /*#__PURE__*/Schema.Struct({
|
|
348
|
-
_tag: Schema.tag("isGreaterThanOrEqualTo"),
|
|
349
|
-
minimum: Schema.Finite
|
|
350
|
-
}).annotate({
|
|
351
|
-
identifier: "IsGreaterThanOrEqualTo"
|
|
352
|
-
});
|
|
353
|
-
const $IsLessThan = /*#__PURE__*/Schema.Struct({
|
|
354
|
-
_tag: Schema.tag("isLessThan"),
|
|
355
|
-
exclusiveMaximum: Schema.Finite
|
|
356
|
-
}).annotate({
|
|
357
|
-
identifier: "IsLessThan"
|
|
358
|
-
});
|
|
359
|
-
const $IsLessThanOrEqualTo = /*#__PURE__*/Schema.Struct({
|
|
360
|
-
_tag: Schema.tag("isLessThanOrEqualTo"),
|
|
361
|
-
maximum: Schema.Finite
|
|
362
|
-
}).annotate({
|
|
363
|
-
identifier: "IsLessThanOrEqualTo"
|
|
364
|
-
});
|
|
365
|
-
const $IsBetween = /*#__PURE__*/Schema.Struct({
|
|
366
|
-
_tag: Schema.tag("isBetween"),
|
|
367
|
-
minimum: Schema.Finite,
|
|
368
|
-
maximum: Schema.Finite,
|
|
369
|
-
exclusiveMinimum: Schema.optional(Schema.Boolean),
|
|
370
|
-
exclusiveMaximum: Schema.optional(Schema.Boolean)
|
|
371
|
-
}).annotate({
|
|
372
|
-
identifier: "IsBetween"
|
|
373
|
-
});
|
|
374
|
-
/**
|
|
375
|
-
* Schema for {@link NumberMeta}.
|
|
376
|
-
*
|
|
377
|
-
* @category schemas
|
|
378
|
-
* @since 4.0.0
|
|
379
|
-
*/
|
|
380
|
-
export const $NumberMeta = /*#__PURE__*/Schema.Union([$IsInt, $IsMultipleOf, $IsFinite, $IsGreaterThan, $IsGreaterThanOrEqualTo, $IsLessThan, $IsLessThanOrEqualTo, $IsBetween]).annotate({
|
|
381
|
-
identifier: "NumberMeta"
|
|
382
|
-
});
|
|
383
|
-
/**
|
|
384
|
-
* Schema for the {@link Number} representation node.
|
|
61
|
+
* **Details**
|
|
385
62
|
*
|
|
386
|
-
*
|
|
387
|
-
* @since 4.0.0
|
|
388
|
-
*/
|
|
389
|
-
export const $Number = /*#__PURE__*/Schema.Struct({
|
|
390
|
-
_tag: Schema.tag("Number"),
|
|
391
|
-
annotations: Schema.optional($Annotations),
|
|
392
|
-
checks: Schema.Array(makeCheck($NumberMeta, "Number"))
|
|
393
|
-
}).annotate({
|
|
394
|
-
identifier: "Number"
|
|
395
|
-
});
|
|
396
|
-
/**
|
|
397
|
-
* Schema for the {@link Boolean} representation node.
|
|
63
|
+
* Apply `SchemaAST.toType` to an AST first to lower its type side instead.
|
|
398
64
|
*
|
|
399
|
-
* @category
|
|
65
|
+
* @category constructors
|
|
400
66
|
* @since 4.0.0
|
|
401
67
|
*/
|
|
402
|
-
export
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
}).annotate({
|
|
406
|
-
identifier: "Boolean"
|
|
407
|
-
});
|
|
408
|
-
const $IsGreaterThanBigInt = /*#__PURE__*/Schema.Struct({
|
|
409
|
-
_tag: Schema.tag("isGreaterThanBigInt"),
|
|
410
|
-
exclusiveMinimum: Schema.BigInt
|
|
411
|
-
}).annotate({
|
|
412
|
-
identifier: "IsGreaterThanBigInt"
|
|
413
|
-
});
|
|
414
|
-
const $IsGreaterThanOrEqualToBigInt = /*#__PURE__*/Schema.Struct({
|
|
415
|
-
_tag: Schema.tag("isGreaterThanOrEqualToBigInt"),
|
|
416
|
-
minimum: Schema.BigInt
|
|
417
|
-
}).annotate({
|
|
418
|
-
identifier: "IsGreaterThanOrEqualToBigInt"
|
|
419
|
-
});
|
|
420
|
-
const $IsLessThanBigInt = /*#__PURE__*/Schema.Struct({
|
|
421
|
-
_tag: Schema.tag("isLessThanBigInt"),
|
|
422
|
-
exclusiveMaximum: Schema.BigInt
|
|
423
|
-
}).annotate({
|
|
424
|
-
identifier: "IsLessThanBigInt"
|
|
425
|
-
});
|
|
426
|
-
const $IsLessThanOrEqualToBigInt = /*#__PURE__*/Schema.Struct({
|
|
427
|
-
_tag: Schema.tag("isLessThanOrEqualToBigInt"),
|
|
428
|
-
maximum: Schema.BigInt
|
|
429
|
-
}).annotate({
|
|
430
|
-
identifier: "IsLessThanOrEqualToBigInt"
|
|
431
|
-
});
|
|
432
|
-
const $IsBetweenBigInt = /*#__PURE__*/Schema.Struct({
|
|
433
|
-
_tag: Schema.tag("isBetweenBigInt"),
|
|
434
|
-
minimum: Schema.BigInt,
|
|
435
|
-
maximum: Schema.BigInt,
|
|
436
|
-
exclusiveMinimum: Schema.optional(Schema.Boolean),
|
|
437
|
-
exclusiveMaximum: Schema.optional(Schema.Boolean)
|
|
438
|
-
}).annotate({
|
|
439
|
-
identifier: "IsBetweenBigInt"
|
|
440
|
-
});
|
|
441
|
-
const $BigIntMeta = /*#__PURE__*/Schema.Union([$IsGreaterThanBigInt, $IsGreaterThanOrEqualToBigInt, $IsLessThanBigInt, $IsLessThanOrEqualToBigInt, $IsBetweenBigInt]).annotate({
|
|
442
|
-
identifier: "BigIntMeta"
|
|
443
|
-
});
|
|
68
|
+
export function toRepresentations(asts) {
|
|
69
|
+
return InternalToRepresentation.toRepresentations(asts);
|
|
70
|
+
}
|
|
444
71
|
/**
|
|
445
|
-
*
|
|
72
|
+
* Wraps a single representation document as a multi-document with one root.
|
|
446
73
|
*
|
|
447
74
|
* **When to use**
|
|
448
75
|
*
|
|
449
|
-
* Use
|
|
450
|
-
* not application `bigint` values.
|
|
451
|
-
*
|
|
452
|
-
* **Details**
|
|
453
|
-
*
|
|
454
|
-
* Accepts representation nodes with `_tag: "BigInt"`, optional annotations,
|
|
455
|
-
* and bigint-specific validation metadata in `checks`.
|
|
76
|
+
* Use when an API such as `toCodeDocument` requires a `MultiDocument`.
|
|
456
77
|
*
|
|
457
|
-
* @
|
|
458
|
-
*
|
|
459
|
-
* @category schemas
|
|
460
|
-
* @since 4.0.0
|
|
461
|
-
*/
|
|
462
|
-
export const $BigInt = /*#__PURE__*/Schema.Struct({
|
|
463
|
-
_tag: Schema.tag("BigInt"),
|
|
464
|
-
annotations: Schema.optional($Annotations),
|
|
465
|
-
checks: Schema.Array(makeCheck($BigIntMeta, "BigInt"))
|
|
466
|
-
}).annotate({
|
|
467
|
-
identifier: "BigInt"
|
|
468
|
-
});
|
|
469
|
-
/**
|
|
470
|
-
* Schema for the {@link Symbol} representation node.
|
|
471
|
-
*
|
|
472
|
-
* @category schemas
|
|
78
|
+
* @category transforming
|
|
473
79
|
* @since 4.0.0
|
|
474
80
|
*/
|
|
475
|
-
export
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
}
|
|
81
|
+
export function toMultiDocument(document) {
|
|
82
|
+
return {
|
|
83
|
+
representations: [document.representation],
|
|
84
|
+
references: document.references
|
|
85
|
+
};
|
|
86
|
+
}
|
|
481
87
|
/**
|
|
482
|
-
*
|
|
483
|
-
* (string, finite number, boolean, or bigint).
|
|
88
|
+
* Compiles a live representation document to JSON Schema Draft 2020-12.
|
|
484
89
|
*
|
|
485
|
-
*
|
|
486
|
-
* @since 4.0.0
|
|
487
|
-
*/
|
|
488
|
-
export const $LiteralValue = /*#__PURE__*/Schema.Union([Schema.String, Schema.Finite, Schema.Boolean, Schema.BigInt]).annotate({
|
|
489
|
-
identifier: "LiteralValue"
|
|
490
|
-
});
|
|
491
|
-
/**
|
|
492
|
-
* Schema for the {@link Literal} representation node.
|
|
90
|
+
* **When to use**
|
|
493
91
|
*
|
|
494
|
-
*
|
|
495
|
-
* @since 4.0.0
|
|
496
|
-
*/
|
|
497
|
-
export const $Literal = /*#__PURE__*/Schema.Struct({
|
|
498
|
-
_tag: Schema.tag("Literal"),
|
|
499
|
-
annotations: Schema.optional($Annotations),
|
|
500
|
-
literal: $LiteralValue
|
|
501
|
-
}).annotate({
|
|
502
|
-
identifier: "Literal"
|
|
503
|
-
});
|
|
504
|
-
/**
|
|
505
|
-
* Schema for the {@link UniqueSymbol} representation node.
|
|
92
|
+
* Use when you need JSON Schema output from a representation whose checks carry compiler annotations.
|
|
506
93
|
*
|
|
507
|
-
*
|
|
508
|
-
* @since 4.0.0
|
|
509
|
-
*/
|
|
510
|
-
export const $UniqueSymbol = /*#__PURE__*/Schema.Struct({
|
|
511
|
-
_tag: Schema.tag("UniqueSymbol"),
|
|
512
|
-
annotations: Schema.optional($Annotations),
|
|
513
|
-
symbol: Schema.Symbol
|
|
514
|
-
}).annotate({
|
|
515
|
-
identifier: "UniqueSymbol"
|
|
516
|
-
});
|
|
517
|
-
/**
|
|
518
|
-
* Schema for the {@link ObjectKeyword} representation node.
|
|
94
|
+
* **Gotchas**
|
|
519
95
|
*
|
|
520
|
-
*
|
|
521
|
-
*
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
_tag: Schema.tag("ObjectKeyword"),
|
|
525
|
-
annotations: Schema.optional($Annotations)
|
|
526
|
-
}).annotate({
|
|
527
|
-
identifier: "ObjectKeyword"
|
|
528
|
-
});
|
|
529
|
-
/**
|
|
530
|
-
* Schema for the {@link Enum} representation node.
|
|
96
|
+
* Opaque declarations are represented by an unconstrained JSON Schema. Check callback results are used directly, and
|
|
97
|
+
* exceptions raised by a callback pass through unchanged. Callbacks must treat their input schemas as immutable. Each
|
|
98
|
+
* returned value must be a valid JSON Schema object graph and must not be mutated after the callback returns. Local
|
|
99
|
+
* definition references returned by callbacks are resolved together with compiler-generated references.
|
|
531
100
|
*
|
|
532
|
-
* @
|
|
533
|
-
* @since 4.0.0
|
|
534
|
-
*/
|
|
535
|
-
export const $Enum = /*#__PURE__*/Schema.Struct({
|
|
536
|
-
_tag: Schema.tag("Enum"),
|
|
537
|
-
annotations: Schema.optional($Annotations),
|
|
538
|
-
enums: Schema.Array(Schema.Tuple([Schema.String, Schema.Union([Schema.String, Schema.Number // NaN, Infinity, -Infinity are allowed enum values
|
|
539
|
-
])]))
|
|
540
|
-
}).annotate({
|
|
541
|
-
identifier: "Enum"
|
|
542
|
-
});
|
|
543
|
-
/**
|
|
544
|
-
* Schema for the {@link TemplateLiteral} representation node.
|
|
101
|
+
* @see {@link toJsonSchemaMultiDocument} for multiple roots sharing definitions
|
|
545
102
|
*
|
|
546
|
-
* @category
|
|
103
|
+
* @category transforming
|
|
547
104
|
* @since 4.0.0
|
|
548
105
|
*/
|
|
549
|
-
export
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
parts: Schema.Array(Representation$ref)
|
|
553
|
-
}).annotate({
|
|
554
|
-
identifier: "TemplateLiteral"
|
|
555
|
-
});
|
|
106
|
+
export function toJsonSchemaDocument(document, options) {
|
|
107
|
+
return InternalToJsonSchemaDocument.toJsonSchemaDocument(document, options);
|
|
108
|
+
}
|
|
556
109
|
/**
|
|
557
|
-
*
|
|
110
|
+
* Compiles multiple live representations to a shared JSON Schema Draft 2020-12 document.
|
|
558
111
|
*
|
|
559
|
-
*
|
|
560
|
-
* @since 4.0.0
|
|
561
|
-
*/
|
|
562
|
-
export const $Element = /*#__PURE__*/Schema.Struct({
|
|
563
|
-
isOptional: Schema.Boolean,
|
|
564
|
-
type: Representation$ref,
|
|
565
|
-
annotations: Schema.optional($Annotations)
|
|
566
|
-
}).annotate({
|
|
567
|
-
identifier: "Element"
|
|
568
|
-
});
|
|
569
|
-
const $IsUnique = /*#__PURE__*/Schema.Struct({
|
|
570
|
-
_tag: Schema.tag("isUnique")
|
|
571
|
-
}).annotate({
|
|
572
|
-
identifier: "IsUnique"
|
|
573
|
-
});
|
|
574
|
-
const $ArraysMeta = /*#__PURE__*/Schema.Union([$IsMinLength, $IsMaxLength, $IsLengthBetween, $IsUnique]).annotate({
|
|
575
|
-
identifier: "ArraysMeta"
|
|
576
|
-
});
|
|
577
|
-
/**
|
|
578
|
-
* Schema for the {@link Arrays} representation node.
|
|
112
|
+
* **When to use**
|
|
579
113
|
*
|
|
580
|
-
*
|
|
581
|
-
* @since 4.0.0
|
|
582
|
-
*/
|
|
583
|
-
export const $Arrays = /*#__PURE__*/Schema.Struct({
|
|
584
|
-
_tag: Schema.tag("Arrays"),
|
|
585
|
-
annotations: Schema.optional($Annotations),
|
|
586
|
-
elements: Schema.Array($Element),
|
|
587
|
-
rest: Schema.Array(Representation$ref),
|
|
588
|
-
checks: Schema.Array(makeCheck($ArraysMeta, "Arrays"))
|
|
589
|
-
}).annotate({
|
|
590
|
-
identifier: "Arrays"
|
|
591
|
-
});
|
|
592
|
-
/**
|
|
593
|
-
* Schema for the {@link PropertySignature} type.
|
|
114
|
+
* Use when several representation roots must share the same JSON Schema definitions.
|
|
594
115
|
*
|
|
595
|
-
*
|
|
596
|
-
* @since 4.0.0
|
|
597
|
-
*/
|
|
598
|
-
export const $PropertySignature = /*#__PURE__*/Schema.Struct({
|
|
599
|
-
annotations: Schema.optional($Annotations),
|
|
600
|
-
name: Schema.PropertyKey,
|
|
601
|
-
type: Representation$ref,
|
|
602
|
-
isOptional: Schema.Boolean,
|
|
603
|
-
isMutable: Schema.Boolean
|
|
604
|
-
}).annotate({
|
|
605
|
-
identifier: "PropertySignature"
|
|
606
|
-
});
|
|
607
|
-
/**
|
|
608
|
-
* Schema for the {@link IndexSignature} type.
|
|
116
|
+
* **Gotchas**
|
|
609
117
|
*
|
|
610
|
-
*
|
|
611
|
-
*
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
parameter: Representation$ref,
|
|
615
|
-
type: Representation$ref
|
|
616
|
-
}).annotate({
|
|
617
|
-
identifier: "IndexSignature"
|
|
618
|
-
});
|
|
619
|
-
const $IsMinProperties = /*#__PURE__*/Schema.Struct({
|
|
620
|
-
_tag: Schema.tag("isMinProperties"),
|
|
621
|
-
minProperties: NonNegativeInt
|
|
622
|
-
}).annotate({
|
|
623
|
-
identifier: "IsMinProperties"
|
|
624
|
-
});
|
|
625
|
-
const $IsMaxProperties = /*#__PURE__*/Schema.Struct({
|
|
626
|
-
_tag: Schema.tag("isMaxProperties"),
|
|
627
|
-
maxProperties: NonNegativeInt
|
|
628
|
-
}).annotate({
|
|
629
|
-
identifier: "IsMaxProperties"
|
|
630
|
-
});
|
|
631
|
-
const $IsPropertiesLengthBetween = /*#__PURE__*/Schema.Struct({
|
|
632
|
-
_tag: Schema.tag("isPropertiesLengthBetween"),
|
|
633
|
-
minimum: NonNegativeInt,
|
|
634
|
-
maximum: NonNegativeInt
|
|
635
|
-
}).annotate({
|
|
636
|
-
identifier: "IsPropertiesLengthBetween"
|
|
637
|
-
});
|
|
638
|
-
const $IsPropertyNames = /*#__PURE__*/Schema.Struct({
|
|
639
|
-
_tag: Schema.tag("isPropertyNames"),
|
|
640
|
-
propertyNames: Representation$ref
|
|
641
|
-
}).annotate({
|
|
642
|
-
identifier: "IsPropertyNames"
|
|
643
|
-
});
|
|
644
|
-
/**
|
|
645
|
-
* Schema for {@link ObjectsMeta}.
|
|
118
|
+
* Every definition is compiled, including definitions that are not reachable from a root. Check callbacks must treat
|
|
119
|
+
* their input schemas as immutable. Each returned value must be a valid JSON Schema object graph and must not be
|
|
120
|
+
* mutated after the callback returns. Local definition references returned by callbacks are resolved together with
|
|
121
|
+
* compiler-generated references.
|
|
646
122
|
*
|
|
647
|
-
* @
|
|
648
|
-
* @since 4.0.0
|
|
649
|
-
*/
|
|
650
|
-
export const $ObjectsMeta = /*#__PURE__*/Schema.Union([$IsMinProperties, $IsMaxProperties, $IsPropertiesLengthBetween, $IsPropertyNames]).annotate({
|
|
651
|
-
identifier: "ObjectsMeta"
|
|
652
|
-
});
|
|
653
|
-
/**
|
|
654
|
-
* Schema for the {@link Objects} representation node.
|
|
123
|
+
* @see {@link toJsonSchemaDocument} for a single root
|
|
655
124
|
*
|
|
656
|
-
* @category
|
|
125
|
+
* @category transforming
|
|
657
126
|
* @since 4.0.0
|
|
658
127
|
*/
|
|
659
|
-
export
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
propertySignatures: Schema.Array($PropertySignature),
|
|
663
|
-
indexSignatures: Schema.Array($IndexSignature),
|
|
664
|
-
checks: Schema.Array(makeCheck($ObjectsMeta, "Objects"))
|
|
665
|
-
}).annotate({
|
|
666
|
-
identifier: "Objects"
|
|
667
|
-
});
|
|
128
|
+
export function toJsonSchemaMultiDocument(document, options) {
|
|
129
|
+
return InternalToJsonSchemaDocument.toJsonSchemaMultiDocument(document, options);
|
|
130
|
+
}
|
|
668
131
|
/**
|
|
669
|
-
*
|
|
132
|
+
* Generates TypeScript source for live schema representations and their definitions.
|
|
670
133
|
*
|
|
671
|
-
*
|
|
672
|
-
* @since 4.0.0
|
|
673
|
-
*/
|
|
674
|
-
export const $Union = /*#__PURE__*/Schema.Struct({
|
|
675
|
-
_tag: Schema.tag("Union"),
|
|
676
|
-
annotations: Schema.optional($Annotations),
|
|
677
|
-
types: Schema.Array(Representation$ref),
|
|
678
|
-
mode: Schema.Literals(["anyOf", "oneOf"])
|
|
679
|
-
}).annotate({
|
|
680
|
-
identifier: "Union"
|
|
681
|
-
});
|
|
682
|
-
/**
|
|
683
|
-
* Schema for the {@link Reference} representation node.
|
|
134
|
+
* **When to use**
|
|
684
135
|
*
|
|
685
|
-
*
|
|
686
|
-
* @since 4.0.0
|
|
687
|
-
*/
|
|
688
|
-
export const $Reference = /*#__PURE__*/Schema.Struct({
|
|
689
|
-
_tag: Schema.tag("Reference"),
|
|
690
|
-
$ref: Schema.String
|
|
691
|
-
}).annotate({
|
|
692
|
-
identifier: "Reference"
|
|
693
|
-
});
|
|
694
|
-
const $IsDateValid = /*#__PURE__*/Schema.Struct({
|
|
695
|
-
_tag: Schema.tag("isDateValid")
|
|
696
|
-
}).annotate({
|
|
697
|
-
identifier: "IsDateValid"
|
|
698
|
-
});
|
|
699
|
-
const $IsGreaterThanDate = /*#__PURE__*/Schema.Struct({
|
|
700
|
-
_tag: Schema.tag("isGreaterThanDate"),
|
|
701
|
-
exclusiveMinimum: Schema.Date
|
|
702
|
-
}).annotate({
|
|
703
|
-
identifier: "IsGreaterThanDate"
|
|
704
|
-
});
|
|
705
|
-
const $IsGreaterThanOrEqualToDate = /*#__PURE__*/Schema.Struct({
|
|
706
|
-
_tag: Schema.tag("isGreaterThanOrEqualToDate"),
|
|
707
|
-
minimum: Schema.Date
|
|
708
|
-
}).annotate({
|
|
709
|
-
identifier: "IsGreaterThanOrEqualToDate"
|
|
710
|
-
});
|
|
711
|
-
const $IsLessThanDate = /*#__PURE__*/Schema.Struct({
|
|
712
|
-
_tag: Schema.tag("isLessThanDate"),
|
|
713
|
-
exclusiveMaximum: Schema.Date
|
|
714
|
-
}).annotate({
|
|
715
|
-
identifier: "IsLessThanDate"
|
|
716
|
-
});
|
|
717
|
-
const $IsLessThanOrEqualToDate = /*#__PURE__*/Schema.Struct({
|
|
718
|
-
_tag: Schema.tag("isLessThanOrEqualToDate"),
|
|
719
|
-
maximum: Schema.Date
|
|
720
|
-
}).annotate({
|
|
721
|
-
identifier: "IsLessThanOrEqualToDate"
|
|
722
|
-
});
|
|
723
|
-
const $IsBetweenDate = /*#__PURE__*/Schema.Struct({
|
|
724
|
-
_tag: Schema.tag("isBetweenDate"),
|
|
725
|
-
minimum: Schema.Date,
|
|
726
|
-
maximum: Schema.Date,
|
|
727
|
-
exclusiveMinimum: Schema.optional(Schema.Boolean),
|
|
728
|
-
exclusiveMaximum: Schema.optional(Schema.Boolean)
|
|
729
|
-
}).annotate({
|
|
730
|
-
identifier: "IsBetweenDate"
|
|
731
|
-
});
|
|
732
|
-
/**
|
|
733
|
-
* Schema for {@link DateMeta}.
|
|
136
|
+
* Use when custom declarations and checks provide `toCode` callbacks and must be emitted without a central handler registry.
|
|
734
137
|
*
|
|
735
|
-
*
|
|
736
|
-
* @since 4.0.0
|
|
737
|
-
*/
|
|
738
|
-
export const $DateMeta = /*#__PURE__*/Schema.Union([$IsDateValid, $IsGreaterThanDate, $IsGreaterThanOrEqualToDate, $IsLessThanDate, $IsLessThanOrEqualToDate, $IsBetweenDate]).annotate({
|
|
739
|
-
identifier: "DateMeta"
|
|
740
|
-
});
|
|
741
|
-
const $IsMinSize = /*#__PURE__*/Schema.Struct({
|
|
742
|
-
_tag: Schema.tag("isMinSize"),
|
|
743
|
-
minSize: NonNegativeInt
|
|
744
|
-
}).annotate({
|
|
745
|
-
identifier: "IsMinSize"
|
|
746
|
-
});
|
|
747
|
-
const $IsMaxSize = /*#__PURE__*/Schema.Struct({
|
|
748
|
-
_tag: Schema.tag("isMaxSize"),
|
|
749
|
-
maxSize: NonNegativeInt
|
|
750
|
-
}).annotate({
|
|
751
|
-
identifier: "IsMaxSize"
|
|
752
|
-
});
|
|
753
|
-
const $IsSizeBetween = /*#__PURE__*/Schema.Struct({
|
|
754
|
-
_tag: Schema.tag("isSizeBetween"),
|
|
755
|
-
minimum: NonNegativeInt,
|
|
756
|
-
maximum: NonNegativeInt
|
|
757
|
-
}).annotate({
|
|
758
|
-
identifier: "IsSizeBetween"
|
|
759
|
-
});
|
|
760
|
-
/**
|
|
761
|
-
* Schema for {@link SizeMeta}.
|
|
138
|
+
* **Gotchas**
|
|
762
139
|
*
|
|
763
|
-
*
|
|
764
|
-
* @since 4.0.0
|
|
765
|
-
*/
|
|
766
|
-
export const $SizeMeta = /*#__PURE__*/Schema.Union([$IsMinSize, $IsMaxSize, $IsSizeBetween]).annotate({
|
|
767
|
-
identifier: "SizeMeta"
|
|
768
|
-
});
|
|
769
|
-
/**
|
|
770
|
-
* Schema for {@link DeclarationMeta}.
|
|
140
|
+
* Opaque declarations and leaf checks require `toCode` callbacks. Callback results are used directly, and exceptions raised by a callback pass through unchanged.
|
|
771
141
|
*
|
|
772
|
-
* @category
|
|
142
|
+
* @category transforming
|
|
773
143
|
* @since 4.0.0
|
|
774
144
|
*/
|
|
775
|
-
export
|
|
776
|
-
|
|
145
|
+
export function toCodeDocument(document) {
|
|
146
|
+
return InternalToCodeDocument.toCodeDocument(document);
|
|
147
|
+
}
|
|
148
|
+
const RepresentationSchema = /*#__PURE__*/Schema.suspend(() => RepresentationUnion);
|
|
149
|
+
const RepresentationsSchema = /*#__PURE__*/Schema.Array(RepresentationSchema);
|
|
150
|
+
const RepresentationAnnotationSchema = /*#__PURE__*/Schema.Struct({
|
|
151
|
+
id: Schema.NonEmptyString,
|
|
152
|
+
payload: Schema.Json
|
|
777
153
|
});
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
* @category schemas
|
|
782
|
-
* @since 4.0.0
|
|
783
|
-
*/
|
|
784
|
-
export const $Declaration = /*#__PURE__*/Schema.Struct({
|
|
785
|
-
_tag: Schema.tag("Declaration"),
|
|
786
|
-
annotations: Schema.optional($Annotations),
|
|
787
|
-
typeParameters: Schema.Array(Representation$ref),
|
|
788
|
-
checks: Schema.Array(makeCheck($DeclarationMeta, "Declaration")),
|
|
789
|
-
encodedSchema: Representation$ref
|
|
790
|
-
}).annotate({
|
|
791
|
-
identifier: "Declaration"
|
|
154
|
+
const CheckRepresentationAnnotationSchema = /*#__PURE__*/Schema.Struct({
|
|
155
|
+
...RepresentationAnnotationSchema.fields,
|
|
156
|
+
schemas: /*#__PURE__*/Schema.optional(RepresentationsSchema)
|
|
792
157
|
});
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
158
|
+
const LiveAnnotationsSchema = /*#__PURE__*/Schema.Record(Schema.String, Schema.Unknown);
|
|
159
|
+
const JsonAnnotationsSchema = /*#__PURE__*/Schema.Record(Schema.String, Schema.Json);
|
|
160
|
+
function pruneAnnotations(annotations) {
|
|
161
|
+
const out = {};
|
|
162
|
+
for (const [key, value] of Object.entries(annotations)) {
|
|
163
|
+
if (SchemaAST.isJson(value)) {
|
|
164
|
+
InternalRecord.assignProperty(out, key, value);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return Object.keys(out).length === 0 ? Option.none() : Option.some(out);
|
|
168
|
+
}
|
|
169
|
+
const AnnotationsSchema = /*#__PURE__*/Schema.optional(LiveAnnotationsSchema).pipe(/*#__PURE__*/Schema.encodeTo(/*#__PURE__*/Schema.optionalKey(JsonAnnotationsSchema), {
|
|
170
|
+
decode: /*#__PURE__*/SchemaGetter.passthroughSubtype(),
|
|
171
|
+
encode: /*#__PURE__*/SchemaGetter.transformOptional(annotations => Option.isNone(annotations) || annotations.value === undefined ? Option.none() : pruneAnnotations(annotations.value))
|
|
172
|
+
}));
|
|
173
|
+
const CheckSchema = /*#__PURE__*/Schema.suspend(() => CheckUnion);
|
|
174
|
+
const ChecksSchema = /*#__PURE__*/Schema.Array(CheckSchema);
|
|
175
|
+
const KeywordFields = {
|
|
176
|
+
annotations: AnnotationsSchema,
|
|
177
|
+
checks: ChecksSchema
|
|
178
|
+
};
|
|
179
|
+
const FilterSchema = /*#__PURE__*/Schema.Struct({
|
|
180
|
+
_tag: /*#__PURE__*/Schema.tag("Filter"),
|
|
181
|
+
representation: CheckRepresentationAnnotationSchema,
|
|
182
|
+
annotations: AnnotationsSchema,
|
|
183
|
+
aborted: Schema.Boolean
|
|
184
|
+
});
|
|
185
|
+
const FilterGroupSchema = /*#__PURE__*/Schema.Struct({
|
|
186
|
+
_tag: /*#__PURE__*/Schema.tag("FilterGroup"),
|
|
187
|
+
representation: /*#__PURE__*/Schema.optional(CheckRepresentationAnnotationSchema),
|
|
188
|
+
annotations: AnnotationsSchema,
|
|
189
|
+
checks: /*#__PURE__*/Schema.NonEmptyArray(CheckSchema)
|
|
190
|
+
});
|
|
191
|
+
const CheckUnion = /*#__PURE__*/Schema.Union([FilterSchema, FilterGroupSchema]);
|
|
192
|
+
function makeKeywordSchema(tag) {
|
|
193
|
+
return Schema.Struct({
|
|
194
|
+
_tag: Schema.tag(tag),
|
|
195
|
+
...KeywordFields
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
const DeclarationSchema = /*#__PURE__*/Schema.Struct({
|
|
199
|
+
_tag: /*#__PURE__*/Schema.tag("Declaration"),
|
|
200
|
+
representation: RepresentationAnnotationSchema,
|
|
201
|
+
annotations: AnnotationsSchema,
|
|
202
|
+
typeParameters: RepresentationsSchema,
|
|
203
|
+
checks: ChecksSchema
|
|
204
|
+
});
|
|
205
|
+
const SuspendSchema = /*#__PURE__*/Schema.Struct({
|
|
206
|
+
_tag: /*#__PURE__*/Schema.tag("Suspend"),
|
|
207
|
+
annotations: AnnotationsSchema,
|
|
208
|
+
checks: /*#__PURE__*/Schema.Tuple([]),
|
|
209
|
+
thunk: RepresentationSchema
|
|
210
|
+
});
|
|
211
|
+
function makeValueSchema(type, value) {
|
|
212
|
+
return value.pipe(Schema.encodeTo(Schema.Struct({
|
|
213
|
+
type: Schema.tag(type),
|
|
214
|
+
value
|
|
215
|
+
}), {
|
|
216
|
+
decode: SchemaGetter.transform(encoded => encoded.value),
|
|
217
|
+
encode: SchemaGetter.transform(value => ({
|
|
218
|
+
type,
|
|
219
|
+
value
|
|
220
|
+
}))
|
|
221
|
+
}));
|
|
222
|
+
}
|
|
223
|
+
const StringValueCodec = /*#__PURE__*/makeValueSchema("string", Schema.String);
|
|
224
|
+
const NumberValueCodec = /*#__PURE__*/makeValueSchema("number", Schema.Number);
|
|
225
|
+
const LiteralSchema = /*#__PURE__*/Schema.Struct({
|
|
226
|
+
_tag: /*#__PURE__*/Schema.tag("Literal"),
|
|
227
|
+
...KeywordFields,
|
|
228
|
+
literal: /*#__PURE__*/Schema.Union([StringValueCodec, /*#__PURE__*/makeValueSchema("number", Schema.Finite), /*#__PURE__*/makeValueSchema("bigint", Schema.BigInt), /*#__PURE__*/makeValueSchema("boolean", Schema.Boolean)])
|
|
806
229
|
});
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
* @category schemas
|
|
812
|
-
* @since 4.0.0
|
|
813
|
-
*/
|
|
814
|
-
export const $Representation = /*#__PURE__*/Schema.Union([$Null, $Undefined, $Void, $Never, $Unknown, $Any, $String, $Number, $Boolean, $BigInt, $Symbol, $Literal, $UniqueSymbol, $ObjectKeyword, $Enum, $TemplateLiteral, $Arrays, $Objects, $Union, $Reference, $Declaration, $Suspend]).annotate({
|
|
815
|
-
identifier: "Schema"
|
|
230
|
+
const UniqueSymbolSchema = /*#__PURE__*/Schema.Struct({
|
|
231
|
+
_tag: /*#__PURE__*/Schema.tag("UniqueSymbol"),
|
|
232
|
+
...KeywordFields,
|
|
233
|
+
symbol: Schema.Symbol
|
|
816
234
|
});
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
*
|
|
822
|
-
* Use to validate or serialize a single schema representation document with
|
|
823
|
-
* `Schema.decodeUnknownSync` or `Schema.encodeSync`.
|
|
824
|
-
*
|
|
825
|
-
* **Gotchas**
|
|
826
|
-
*
|
|
827
|
-
* This codec validates document structure but does not resolve `$ref` keys
|
|
828
|
-
* against `references`.
|
|
829
|
-
*
|
|
830
|
-
* @see {@link DocumentFromJson} for the JSON-string codec wrapper
|
|
831
|
-
* @see {@link $MultiDocument} for validating documents with multiple root representations
|
|
832
|
-
*
|
|
833
|
-
* @category schemas
|
|
834
|
-
* @since 4.0.0
|
|
835
|
-
*/
|
|
836
|
-
export const $Document = /*#__PURE__*/Schema.Struct({
|
|
837
|
-
representation: $Representation,
|
|
838
|
-
references: Schema.Record(Schema.String, $Representation)
|
|
839
|
-
}).annotate({
|
|
840
|
-
identifier: "Document"
|
|
235
|
+
const EnumSchema = /*#__PURE__*/Schema.Struct({
|
|
236
|
+
_tag: /*#__PURE__*/Schema.tag("Enum"),
|
|
237
|
+
...KeywordFields,
|
|
238
|
+
enums: /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Tuple([Schema.String, /*#__PURE__*/Schema.Union([StringValueCodec, NumberValueCodec])]))
|
|
841
239
|
});
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
* @since 4.0.0
|
|
847
|
-
*/
|
|
848
|
-
export const $MultiDocument = /*#__PURE__*/Schema.Struct({
|
|
849
|
-
representations: Schema.NonEmptyArray($Representation),
|
|
850
|
-
references: Schema.Record(Schema.String, $Representation)
|
|
851
|
-
}).annotate({
|
|
852
|
-
identifier: "MultiDocument"
|
|
240
|
+
const TemplateLiteralSchema = /*#__PURE__*/Schema.Struct({
|
|
241
|
+
_tag: /*#__PURE__*/Schema.tag("TemplateLiteral"),
|
|
242
|
+
...KeywordFields,
|
|
243
|
+
parts: RepresentationsSchema
|
|
853
244
|
});
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
*/
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
245
|
+
const ElementSchema = /*#__PURE__*/Schema.Struct({
|
|
246
|
+
isOptional: Schema.Boolean,
|
|
247
|
+
type: RepresentationSchema,
|
|
248
|
+
annotations: AnnotationsSchema
|
|
249
|
+
});
|
|
250
|
+
const ArraysSchema = /*#__PURE__*/Schema.Struct({
|
|
251
|
+
_tag: /*#__PURE__*/Schema.tag("Arrays"),
|
|
252
|
+
...KeywordFields,
|
|
253
|
+
elements: /*#__PURE__*/Schema.Array(ElementSchema),
|
|
254
|
+
rest: RepresentationsSchema
|
|
255
|
+
});
|
|
256
|
+
const PropertySignatureSchema = /*#__PURE__*/Schema.Struct({
|
|
257
|
+
name: /*#__PURE__*/Schema.Union([StringValueCodec, NumberValueCodec, /*#__PURE__*/makeValueSchema("symbol", Schema.Symbol)]),
|
|
258
|
+
type: RepresentationSchema,
|
|
259
|
+
isOptional: Schema.Boolean,
|
|
260
|
+
isMutable: Schema.Boolean,
|
|
261
|
+
annotations: AnnotationsSchema
|
|
262
|
+
});
|
|
263
|
+
const IndexSignatureSchema = /*#__PURE__*/Schema.Struct({
|
|
264
|
+
parameter: RepresentationSchema,
|
|
265
|
+
type: RepresentationSchema
|
|
266
|
+
});
|
|
267
|
+
const ObjectsSchema = /*#__PURE__*/Schema.Struct({
|
|
268
|
+
_tag: /*#__PURE__*/Schema.tag("Objects"),
|
|
269
|
+
...KeywordFields,
|
|
270
|
+
propertySignatures: /*#__PURE__*/Schema.Array(PropertySignatureSchema),
|
|
271
|
+
indexSignatures: /*#__PURE__*/Schema.Array(IndexSignatureSchema)
|
|
272
|
+
});
|
|
273
|
+
const UnionSchema = /*#__PURE__*/Schema.Struct({
|
|
274
|
+
_tag: /*#__PURE__*/Schema.tag("Union"),
|
|
275
|
+
...KeywordFields,
|
|
276
|
+
types: RepresentationsSchema,
|
|
277
|
+
mode: /*#__PURE__*/Schema.Literals(["anyOf", "oneOf"])
|
|
278
|
+
});
|
|
279
|
+
const ReferenceSchema = /*#__PURE__*/Schema.Struct({
|
|
280
|
+
_tag: /*#__PURE__*/Schema.tag("Reference"),
|
|
281
|
+
$ref: Schema.NonEmptyString
|
|
282
|
+
});
|
|
283
|
+
const RepresentationUnion = /*#__PURE__*/Schema.Union([DeclarationSchema, ReferenceSchema, SuspendSchema, /*#__PURE__*/makeKeywordSchema("Null"), /*#__PURE__*/makeKeywordSchema("Undefined"), /*#__PURE__*/makeKeywordSchema("Void"), /*#__PURE__*/makeKeywordSchema("Never"), /*#__PURE__*/makeKeywordSchema("Unknown"), /*#__PURE__*/makeKeywordSchema("Any"), /*#__PURE__*/makeKeywordSchema("String"), /*#__PURE__*/makeKeywordSchema("Number"), /*#__PURE__*/makeKeywordSchema("Boolean"), /*#__PURE__*/makeKeywordSchema("BigInt"), /*#__PURE__*/makeKeywordSchema("Symbol"), /*#__PURE__*/makeKeywordSchema("ObjectKeyword"), LiteralSchema, UniqueSymbolSchema, EnumSchema, TemplateLiteralSchema, ArraysSchema, ObjectsSchema, UnionSchema]);
|
|
284
|
+
const ReferencesSchema = /*#__PURE__*/Schema.Record(Schema.String, RepresentationSchema);
|
|
285
|
+
const DocumentFromJson = /*#__PURE__*/Schema.toCodecJson(/*#__PURE__*/Schema.Struct({
|
|
286
|
+
representation: RepresentationSchema,
|
|
287
|
+
references: ReferencesSchema
|
|
288
|
+
}));
|
|
289
|
+
const MultiDocumentFromJson = /*#__PURE__*/Schema.toCodecJson(/*#__PURE__*/Schema.Struct({
|
|
290
|
+
representations: /*#__PURE__*/Schema.NonEmptyArray(RepresentationSchema),
|
|
291
|
+
references: ReferencesSchema
|
|
292
|
+
}));
|
|
293
|
+
const encodeDocument = /*#__PURE__*/Schema.encodeSync(DocumentFromJson);
|
|
294
|
+
const encodeMultiDocument = /*#__PURE__*/Schema.encodeSync(MultiDocumentFromJson);
|
|
295
|
+
const decodeDocument = /*#__PURE__*/Schema.decodeSync(DocumentFromJson);
|
|
296
|
+
const decodeMultiDocument = /*#__PURE__*/Schema.decodeSync(MultiDocumentFromJson);
|
|
297
|
+
/**
|
|
298
|
+
* Projects a live single-root representation document and encodes it as JSON.
|
|
893
299
|
*
|
|
894
300
|
* **When to use**
|
|
895
301
|
*
|
|
896
|
-
* Use when you
|
|
897
|
-
* `MultiDocument` with shared references.
|
|
302
|
+
* Use when you need a stable JSON value for storage or transport after calling `toRepresentation`.
|
|
898
303
|
*
|
|
899
|
-
* **
|
|
304
|
+
* **Gotchas**
|
|
900
305
|
*
|
|
901
|
-
*
|
|
306
|
+
* Generic annotations that are not JSON are omitted. Invalid persistence identities and unsupported structural values throw an `Error` containing their representation path.
|
|
902
307
|
*
|
|
903
|
-
* @see {@link
|
|
904
|
-
* @see {@link
|
|
308
|
+
* @see {@link toRepresentation} for constructing the live document
|
|
309
|
+
* @see {@link toJsonMultiDocument} for documents with multiple roots
|
|
905
310
|
*
|
|
906
|
-
* @category
|
|
311
|
+
* @category encoding
|
|
907
312
|
* @since 4.0.0
|
|
908
313
|
*/
|
|
909
|
-
export
|
|
314
|
+
export function toJson(document) {
|
|
315
|
+
return encodeDocument(document);
|
|
316
|
+
}
|
|
910
317
|
/**
|
|
911
|
-
*
|
|
318
|
+
* Projects a live multi-root representation document and encodes it as JSON.
|
|
912
319
|
*
|
|
913
320
|
* **When to use**
|
|
914
321
|
*
|
|
915
|
-
* Use when you need
|
|
916
|
-
* `Schema.decodeUnknownSync` or `Schema.encodeSync`.
|
|
917
|
-
*
|
|
918
|
-
* **Example** (Round-tripping a Document through JSON)
|
|
919
|
-
*
|
|
920
|
-
* ```ts
|
|
921
|
-
* import { Schema, SchemaRepresentation } from "effect"
|
|
922
|
-
*
|
|
923
|
-
* const doc = SchemaRepresentation.fromAST(Schema.String.ast)
|
|
924
|
-
* const json = Schema.encodeSync(SchemaRepresentation.DocumentFromJson)(doc)
|
|
925
|
-
* const back = Schema.decodeUnknownSync(SchemaRepresentation.DocumentFromJson)(json)
|
|
926
|
-
* ```
|
|
927
|
-
*
|
|
928
|
-
* @see {@link $Document}
|
|
929
|
-
* @see {@link MultiDocumentFromJson}
|
|
930
|
-
*
|
|
931
|
-
* @category schemas
|
|
932
|
-
* @since 4.0.0
|
|
933
|
-
*/
|
|
934
|
-
export const DocumentFromJson = /*#__PURE__*/Schema.toCodecJson($Document);
|
|
935
|
-
/**
|
|
936
|
-
* Schema for `MultiDocument` values encoded as JSON.
|
|
937
|
-
*
|
|
938
|
-
* @see {@link $MultiDocument}
|
|
939
|
-
* @see {@link DocumentFromJson}
|
|
940
|
-
*
|
|
941
|
-
* @category schemas
|
|
942
|
-
* @since 4.0.0
|
|
943
|
-
*/
|
|
944
|
-
export const MultiDocumentFromJson = /*#__PURE__*/Schema.toCodecJson($MultiDocument);
|
|
945
|
-
/**
|
|
946
|
-
* Wraps a single {@link Document} as a {@link MultiDocument} with one
|
|
947
|
-
* representation.
|
|
322
|
+
* Use when you need one JSON value for multiple live roots that share a reference environment.
|
|
948
323
|
*
|
|
949
|
-
* **
|
|
324
|
+
* **Gotchas**
|
|
950
325
|
*
|
|
951
|
-
*
|
|
952
|
-
* API expects a `MultiDocument`.
|
|
326
|
+
* The root order and shared reference keys are preserved, while non-JSON generic annotations are omitted.
|
|
953
327
|
*
|
|
954
|
-
* @see {@link
|
|
955
|
-
* @see {@link
|
|
328
|
+
* @see {@link toRepresentations} for constructing the live multi-document
|
|
329
|
+
* @see {@link toJson} for a single-root document
|
|
956
330
|
*
|
|
957
|
-
* @category
|
|
331
|
+
* @category encoding
|
|
958
332
|
* @since 4.0.0
|
|
959
333
|
*/
|
|
960
|
-
export function
|
|
961
|
-
return
|
|
962
|
-
representations: [document.representation],
|
|
963
|
-
references: document.references
|
|
964
|
-
};
|
|
334
|
+
export function toJsonMultiDocument(document) {
|
|
335
|
+
return encodeMultiDocument(document);
|
|
965
336
|
}
|
|
966
337
|
/**
|
|
967
|
-
*
|
|
968
|
-
* types, including Option, Result, Redacted, Cause, Exit, ReadonlyMap, HashMap,
|
|
969
|
-
* ReadonlySet, Date, Duration, URL, and RegExp.
|
|
338
|
+
* Decodes a persisted single-root representation document from JSON.
|
|
970
339
|
*
|
|
971
340
|
* **When to use**
|
|
972
341
|
*
|
|
973
|
-
* Use when
|
|
974
|
-
* reconstruct runtime schemas for built-in Effect declarations.
|
|
342
|
+
* Use when reading a representation document from storage or transport before inspecting it or passing it to `fromRepresentation`.
|
|
975
343
|
*
|
|
976
|
-
* **
|
|
344
|
+
* **Gotchas**
|
|
977
345
|
*
|
|
978
|
-
*
|
|
979
|
-
* fallback to `encodedSchema`.
|
|
346
|
+
* Invalid documents throw a schema decoding error. Decoding does not reconstruct runtime callbacks.
|
|
980
347
|
*
|
|
981
|
-
* @see {@link
|
|
982
|
-
* @see {@link
|
|
348
|
+
* @see {@link toJson} for encoding a document
|
|
349
|
+
* @see {@link fromRepresentation} for reconstructing a runtime schema
|
|
350
|
+
* @see {@link fromJsonMultiDocument} for multiple roots sharing references
|
|
983
351
|
*
|
|
984
|
-
* @category
|
|
352
|
+
* @category decoding
|
|
985
353
|
* @since 4.0.0
|
|
986
354
|
*/
|
|
987
|
-
export
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
const typeParameters = s.typeParameters.map(recur);
|
|
991
|
-
switch (typeConstructor._tag) {
|
|
992
|
-
// built-in types
|
|
993
|
-
case "Date":
|
|
994
|
-
return Schema.Date;
|
|
995
|
-
case "Error":
|
|
996
|
-
return Schema.Error(typeConstructor.options);
|
|
997
|
-
case "File":
|
|
998
|
-
return Schema.File;
|
|
999
|
-
case "FormData":
|
|
1000
|
-
return Schema.FormData;
|
|
1001
|
-
case "ReadonlyMap":
|
|
1002
|
-
return Schema.ReadonlyMap(typeParameters[0], typeParameters[1]);
|
|
1003
|
-
case "ReadonlySet":
|
|
1004
|
-
return Schema.ReadonlySet(typeParameters[0]);
|
|
1005
|
-
case "RegExp":
|
|
1006
|
-
return Schema.RegExp;
|
|
1007
|
-
case "Uint8Array":
|
|
1008
|
-
return Schema.Uint8Array;
|
|
1009
|
-
case "URL":
|
|
1010
|
-
return Schema.URL;
|
|
1011
|
-
case "URLSearchParams":
|
|
1012
|
-
return Schema.URLSearchParams;
|
|
1013
|
-
// effect types
|
|
1014
|
-
case "effect/Option":
|
|
1015
|
-
return Schema.Option(typeParameters[0]);
|
|
1016
|
-
case "effect/Result":
|
|
1017
|
-
return Schema.Result(typeParameters[0], typeParameters[1]);
|
|
1018
|
-
case "effect/Redacted":
|
|
1019
|
-
return Schema.Redacted(typeParameters[0], typeConstructor.options);
|
|
1020
|
-
case "effect/DateTime.TimeZone":
|
|
1021
|
-
return Schema.TimeZone;
|
|
1022
|
-
case "effect/DateTime.TimeZone.Named":
|
|
1023
|
-
return Schema.TimeZoneNamed;
|
|
1024
|
-
case "effect/DateTime.TimeZone.Offset":
|
|
1025
|
-
return Schema.TimeZoneOffset;
|
|
1026
|
-
case "effect/DateTime.Utc":
|
|
1027
|
-
return Schema.DateTimeUtc;
|
|
1028
|
-
case "effect/DateTime.Zoned":
|
|
1029
|
-
return Schema.DateTimeZoned;
|
|
1030
|
-
case "effect/BigDecimal":
|
|
1031
|
-
return Schema.BigDecimal;
|
|
1032
|
-
case "effect/Chunk":
|
|
1033
|
-
return Schema.Chunk(typeParameters[0]);
|
|
1034
|
-
case "effect/Cause":
|
|
1035
|
-
return Schema.Cause(typeParameters[0], typeParameters[1]);
|
|
1036
|
-
case "effect/Cause/Failure":
|
|
1037
|
-
return Schema.CauseReason(typeParameters[0], typeParameters[1]);
|
|
1038
|
-
case "effect/Duration":
|
|
1039
|
-
return Schema.Duration;
|
|
1040
|
-
case "effect/Exit":
|
|
1041
|
-
return Schema.Exit(typeParameters[0], typeParameters[1], typeParameters[2]);
|
|
1042
|
-
case "effect/Json":
|
|
1043
|
-
return Schema.Json;
|
|
1044
|
-
case "effect/MutableJson":
|
|
1045
|
-
return Schema.MutableJson;
|
|
1046
|
-
case "effect/HashMap":
|
|
1047
|
-
return Schema.HashMap(typeParameters[0], typeParameters[1]);
|
|
1048
|
-
case "effect/HashSet":
|
|
1049
|
-
return Schema.HashSet(typeParameters[0]);
|
|
1050
|
-
}
|
|
1051
|
-
}
|
|
1052
|
-
};
|
|
355
|
+
export function fromJson(input) {
|
|
356
|
+
return decodeDocument(input);
|
|
357
|
+
}
|
|
1053
358
|
/**
|
|
1054
|
-
*
|
|
359
|
+
* Decodes a persisted multi-root representation document from JSON.
|
|
1055
360
|
*
|
|
1056
361
|
* **When to use**
|
|
1057
362
|
*
|
|
1058
|
-
* Use when
|
|
1059
|
-
* need a runtime Schema for decoding/encoding.
|
|
1060
|
-
*
|
|
1061
|
-
* **Details**
|
|
1062
|
-
*
|
|
1063
|
-
* Pass `options.reviver`, such as {@link toSchemaDefaultReviver}, to handle
|
|
1064
|
-
* {@link Declaration} nodes for types like `Date` and `Option`. Without a
|
|
1065
|
-
* reviver, declarations fall back to their `encodedSchema`. Circular references
|
|
1066
|
-
* are handled via lazy `Schema.suspend`.
|
|
363
|
+
* Use when reading multiple representation roots that share references before inspecting them or passing them to `fromRepresentations`.
|
|
1067
364
|
*
|
|
1068
365
|
* **Gotchas**
|
|
1069
366
|
*
|
|
1070
|
-
*
|
|
1071
|
-
*
|
|
1072
|
-
* **Example** (Reconstructing a Schema)
|
|
367
|
+
* Invalid documents throw a schema decoding error. Decoding does not reconstruct runtime callbacks.
|
|
1073
368
|
*
|
|
1074
|
-
*
|
|
1075
|
-
*
|
|
1076
|
-
*
|
|
1077
|
-
* const doc = SchemaRepresentation.fromAST(
|
|
1078
|
-
* Schema.Struct({ name: Schema.String }).ast
|
|
1079
|
-
* )
|
|
1080
|
-
*
|
|
1081
|
-
* const schema = SchemaRepresentation.toSchema(doc)
|
|
1082
|
-
* console.log(JSON.stringify(Schema.toJsonSchemaDocument(schema), null, 2))
|
|
1083
|
-
* ```
|
|
369
|
+
* @see {@link toJsonMultiDocument} for encoding a multi-document
|
|
370
|
+
* @see {@link fromRepresentations} for reconstructing runtime schemas
|
|
371
|
+
* @see {@link fromJson} for a single root
|
|
1084
372
|
*
|
|
1085
|
-
* @
|
|
1086
|
-
* @see {@link Reviver}
|
|
1087
|
-
* @see {@link toSchemaDefaultReviver}
|
|
1088
|
-
*
|
|
1089
|
-
* @category Runtime Generation
|
|
373
|
+
* @category decoding
|
|
1090
374
|
* @since 4.0.0
|
|
1091
375
|
*/
|
|
1092
|
-
export function
|
|
1093
|
-
|
|
1094
|
-
return recur(document.representation);
|
|
1095
|
-
function recur(r) {
|
|
1096
|
-
let out = on(r);
|
|
1097
|
-
if ("annotations" in r && r.annotations) out = out.annotate(r.annotations);
|
|
1098
|
-
out = toSchemaChecks(out, r);
|
|
1099
|
-
return out;
|
|
1100
|
-
}
|
|
1101
|
-
function getSlot(identifier) {
|
|
1102
|
-
const existing = slots.get(identifier);
|
|
1103
|
-
if (existing) return existing;
|
|
1104
|
-
// Create the slot *before* resolving, so self-references can see it.
|
|
1105
|
-
const slot = {
|
|
1106
|
-
state: 0,
|
|
1107
|
-
value: undefined,
|
|
1108
|
-
ref: Schema.suspend(() => {
|
|
1109
|
-
if (slot.value === undefined) {
|
|
1110
|
-
return Schema.Unknown;
|
|
1111
|
-
}
|
|
1112
|
-
return slot.value;
|
|
1113
|
-
})
|
|
1114
|
-
};
|
|
1115
|
-
slots.set(identifier, slot);
|
|
1116
|
-
return slot;
|
|
1117
|
-
}
|
|
1118
|
-
function resolveReference($ref) {
|
|
1119
|
-
const definition = document.references[$ref];
|
|
1120
|
-
if (definition === undefined) {
|
|
1121
|
-
throw new Error(`Reference ${$ref} not found`);
|
|
1122
|
-
}
|
|
1123
|
-
const slot = getSlot($ref);
|
|
1124
|
-
if (slot.state === 2) {
|
|
1125
|
-
// Already built: return the built schema directly
|
|
1126
|
-
return slot.value;
|
|
1127
|
-
}
|
|
1128
|
-
if (slot.state === 1) {
|
|
1129
|
-
// Circular: we're currently building this identifier.
|
|
1130
|
-
return slot.ref;
|
|
1131
|
-
}
|
|
1132
|
-
// First time: build it.
|
|
1133
|
-
slot.state = 1;
|
|
1134
|
-
try {
|
|
1135
|
-
slot.value = recur(definition);
|
|
1136
|
-
slot.state = 2;
|
|
1137
|
-
return slot.value;
|
|
1138
|
-
} catch (e) {
|
|
1139
|
-
// Leave the slot in a safe state so future thunks don't silently succeed.
|
|
1140
|
-
slot.state = 0;
|
|
1141
|
-
slot.value = undefined;
|
|
1142
|
-
throw e;
|
|
1143
|
-
}
|
|
1144
|
-
}
|
|
1145
|
-
function on(r) {
|
|
1146
|
-
switch (r._tag) {
|
|
1147
|
-
case "Declaration":
|
|
1148
|
-
return options?.reviver?.(r, recur) ?? recur(r.encodedSchema);
|
|
1149
|
-
case "Reference":
|
|
1150
|
-
return resolveReference(r.$ref);
|
|
1151
|
-
case "Suspend":
|
|
1152
|
-
return recur(r.thunk);
|
|
1153
|
-
case "Null":
|
|
1154
|
-
return Schema.Null;
|
|
1155
|
-
case "Undefined":
|
|
1156
|
-
return Schema.Undefined;
|
|
1157
|
-
case "Void":
|
|
1158
|
-
return Schema.Void;
|
|
1159
|
-
case "Never":
|
|
1160
|
-
return Schema.Never;
|
|
1161
|
-
case "Unknown":
|
|
1162
|
-
return Schema.Unknown;
|
|
1163
|
-
case "Any":
|
|
1164
|
-
return Schema.Any;
|
|
1165
|
-
case "String":
|
|
1166
|
-
{
|
|
1167
|
-
const contentMediaType = r.contentMediaType;
|
|
1168
|
-
const contentSchema = r.contentSchema;
|
|
1169
|
-
if (contentMediaType === "application/json" && contentSchema !== undefined) {
|
|
1170
|
-
return Schema.fromJsonString(recur(contentSchema));
|
|
1171
|
-
}
|
|
1172
|
-
return Schema.String;
|
|
1173
|
-
}
|
|
1174
|
-
case "Number":
|
|
1175
|
-
return Schema.Number;
|
|
1176
|
-
case "Boolean":
|
|
1177
|
-
return Schema.Boolean;
|
|
1178
|
-
case "BigInt":
|
|
1179
|
-
return Schema.BigInt;
|
|
1180
|
-
case "Symbol":
|
|
1181
|
-
return Schema.Symbol;
|
|
1182
|
-
case "Literal":
|
|
1183
|
-
return Schema.Literal(r.literal);
|
|
1184
|
-
case "UniqueSymbol":
|
|
1185
|
-
return Schema.UniqueSymbol(r.symbol);
|
|
1186
|
-
case "ObjectKeyword":
|
|
1187
|
-
return Schema.ObjectKeyword;
|
|
1188
|
-
case "Enum":
|
|
1189
|
-
return Schema.Enum(Object.fromEntries(r.enums));
|
|
1190
|
-
case "TemplateLiteral":
|
|
1191
|
-
{
|
|
1192
|
-
const parts = r.parts.map(recur);
|
|
1193
|
-
return Schema.TemplateLiteral(parts);
|
|
1194
|
-
}
|
|
1195
|
-
case "Arrays":
|
|
1196
|
-
{
|
|
1197
|
-
const elements = r.elements.map(e => {
|
|
1198
|
-
const s = recur(e.type);
|
|
1199
|
-
return e.isOptional ? Schema.optionalKey(s) : s;
|
|
1200
|
-
});
|
|
1201
|
-
const rest = r.rest.map(recur);
|
|
1202
|
-
if (Arr.isArrayNonEmpty(rest)) {
|
|
1203
|
-
if (r.elements.length === 0 && r.rest.length === 1) {
|
|
1204
|
-
return Schema.Array(rest[0]);
|
|
1205
|
-
}
|
|
1206
|
-
return Schema.TupleWithRest(Schema.Tuple(elements), rest);
|
|
1207
|
-
}
|
|
1208
|
-
return Schema.Tuple(elements);
|
|
1209
|
-
}
|
|
1210
|
-
case "Objects":
|
|
1211
|
-
{
|
|
1212
|
-
const fields = {};
|
|
1213
|
-
for (const ps of r.propertySignatures) {
|
|
1214
|
-
const s = recur(ps.type);
|
|
1215
|
-
const withOptional = ps.isOptional ? Schema.optionalKey(s) : s;
|
|
1216
|
-
fields[ps.name] = ps.isMutable ? Schema.mutableKey(withOptional) : withOptional;
|
|
1217
|
-
}
|
|
1218
|
-
const indexSignatures = r.indexSignatures.map(is => Schema.Record(recur(is.parameter), recur(is.type)));
|
|
1219
|
-
if (Arr.isArrayNonEmpty(indexSignatures)) {
|
|
1220
|
-
if (r.propertySignatures.length === 0 && indexSignatures.length === 1) {
|
|
1221
|
-
return indexSignatures[0];
|
|
1222
|
-
}
|
|
1223
|
-
return Schema.StructWithRest(Schema.Struct(fields), indexSignatures);
|
|
1224
|
-
}
|
|
1225
|
-
return Schema.Struct(fields);
|
|
1226
|
-
}
|
|
1227
|
-
case "Union":
|
|
1228
|
-
{
|
|
1229
|
-
if (r.types.length === 0) return Schema.Never;
|
|
1230
|
-
if (r.types.every(t => t._tag === "Literal")) {
|
|
1231
|
-
if (r.types.length === 1) {
|
|
1232
|
-
return Schema.Literal(r.types[0].literal);
|
|
1233
|
-
}
|
|
1234
|
-
return Schema.Literals(r.types.map(t => t.literal));
|
|
1235
|
-
}
|
|
1236
|
-
return Schema.Union(r.types.map(recur), {
|
|
1237
|
-
mode: r.mode
|
|
1238
|
-
});
|
|
1239
|
-
}
|
|
1240
|
-
}
|
|
1241
|
-
}
|
|
1242
|
-
function toSchemaChecks(top, schema) {
|
|
1243
|
-
switch (schema._tag) {
|
|
1244
|
-
default:
|
|
1245
|
-
return top;
|
|
1246
|
-
case "String":
|
|
1247
|
-
case "Number":
|
|
1248
|
-
case "BigInt":
|
|
1249
|
-
case "Arrays":
|
|
1250
|
-
case "Objects":
|
|
1251
|
-
case "Declaration":
|
|
1252
|
-
{
|
|
1253
|
-
const checks = schema.checks.map(toSchemaCheck);
|
|
1254
|
-
return Arr.isArrayNonEmpty(checks) ? top.check(...checks) : top;
|
|
1255
|
-
}
|
|
1256
|
-
}
|
|
1257
|
-
}
|
|
1258
|
-
function toSchemaCheck(check) {
|
|
1259
|
-
switch (check._tag) {
|
|
1260
|
-
case "Filter":
|
|
1261
|
-
return toSchemaFilter(check);
|
|
1262
|
-
case "FilterGroup":
|
|
1263
|
-
{
|
|
1264
|
-
return Schema.makeFilterGroup(Arr.map(check.checks, toSchemaCheck), check.annotations);
|
|
1265
|
-
}
|
|
1266
|
-
}
|
|
1267
|
-
}
|
|
1268
|
-
function toSchemaFilter(filter) {
|
|
1269
|
-
const a = filter.annotations;
|
|
1270
|
-
switch (filter.meta._tag) {
|
|
1271
|
-
// String Meta
|
|
1272
|
-
case "isStringFinite":
|
|
1273
|
-
return Schema.isStringFinite(a);
|
|
1274
|
-
case "isStringBigInt":
|
|
1275
|
-
return Schema.isStringBigInt(a);
|
|
1276
|
-
case "isStringSymbol":
|
|
1277
|
-
return Schema.isStringSymbol(a);
|
|
1278
|
-
case "isMinLength":
|
|
1279
|
-
return Schema.isMinLength(filter.meta.minLength, a);
|
|
1280
|
-
case "isMaxLength":
|
|
1281
|
-
return Schema.isMaxLength(filter.meta.maxLength, a);
|
|
1282
|
-
case "isLengthBetween":
|
|
1283
|
-
return Schema.isLengthBetween(filter.meta.minimum, filter.meta.maximum, a);
|
|
1284
|
-
case "isPattern":
|
|
1285
|
-
return Schema.isPattern(filter.meta.regExp, a);
|
|
1286
|
-
case "isTrimmed":
|
|
1287
|
-
return Schema.isTrimmed(a);
|
|
1288
|
-
case "isUUID":
|
|
1289
|
-
return Schema.isUUID(filter.meta.version, a);
|
|
1290
|
-
case "isGUID":
|
|
1291
|
-
return Schema.isGUID(a);
|
|
1292
|
-
case "isULID":
|
|
1293
|
-
return Schema.isULID(a);
|
|
1294
|
-
case "isBase64":
|
|
1295
|
-
return Schema.isBase64(a);
|
|
1296
|
-
case "isBase64Url":
|
|
1297
|
-
return Schema.isBase64Url(a);
|
|
1298
|
-
case "isStartsWith":
|
|
1299
|
-
return Schema.isStartsWith(filter.meta.startsWith, a);
|
|
1300
|
-
case "isEndsWith":
|
|
1301
|
-
return Schema.isEndsWith(filter.meta.endsWith, a);
|
|
1302
|
-
case "isIncludes":
|
|
1303
|
-
return Schema.isIncludes(filter.meta.includes, a);
|
|
1304
|
-
case "isUppercased":
|
|
1305
|
-
return Schema.isUppercased(a);
|
|
1306
|
-
case "isLowercased":
|
|
1307
|
-
return Schema.isLowercased(a);
|
|
1308
|
-
case "isCapitalized":
|
|
1309
|
-
return Schema.isCapitalized(a);
|
|
1310
|
-
case "isUncapitalized":
|
|
1311
|
-
return Schema.isUncapitalized(a);
|
|
1312
|
-
// Number Meta
|
|
1313
|
-
case "isFinite":
|
|
1314
|
-
return Schema.isFinite(a);
|
|
1315
|
-
case "isInt":
|
|
1316
|
-
return Schema.isInt(a);
|
|
1317
|
-
case "isMultipleOf":
|
|
1318
|
-
return Schema.isMultipleOf(filter.meta.divisor, a);
|
|
1319
|
-
case "isGreaterThan":
|
|
1320
|
-
return Schema.isGreaterThan(filter.meta.exclusiveMinimum, a);
|
|
1321
|
-
case "isGreaterThanOrEqualTo":
|
|
1322
|
-
return Schema.isGreaterThanOrEqualTo(filter.meta.minimum, a);
|
|
1323
|
-
case "isLessThan":
|
|
1324
|
-
return Schema.isLessThan(filter.meta.exclusiveMaximum, a);
|
|
1325
|
-
case "isLessThanOrEqualTo":
|
|
1326
|
-
return Schema.isLessThanOrEqualTo(filter.meta.maximum, a);
|
|
1327
|
-
case "isBetween":
|
|
1328
|
-
return Schema.isBetween(filter.meta, a);
|
|
1329
|
-
// BigInt Meta
|
|
1330
|
-
case "isGreaterThanBigInt":
|
|
1331
|
-
return Schema.isGreaterThanBigInt(filter.meta.exclusiveMinimum, a);
|
|
1332
|
-
case "isGreaterThanOrEqualToBigInt":
|
|
1333
|
-
return Schema.isGreaterThanOrEqualToBigInt(filter.meta.minimum, a);
|
|
1334
|
-
case "isLessThanBigInt":
|
|
1335
|
-
return Schema.isLessThanBigInt(filter.meta.exclusiveMaximum, a);
|
|
1336
|
-
case "isLessThanOrEqualToBigInt":
|
|
1337
|
-
return Schema.isLessThanOrEqualToBigInt(filter.meta.maximum, a);
|
|
1338
|
-
case "isBetweenBigInt":
|
|
1339
|
-
return Schema.isBetweenBigInt(filter.meta, a);
|
|
1340
|
-
// Object Meta
|
|
1341
|
-
case "isMinProperties":
|
|
1342
|
-
return Schema.isMinProperties(filter.meta.minProperties, a);
|
|
1343
|
-
case "isMaxProperties":
|
|
1344
|
-
return Schema.isMaxProperties(filter.meta.maxProperties, a);
|
|
1345
|
-
case "isPropertiesLengthBetween":
|
|
1346
|
-
return Schema.isPropertiesLengthBetween(filter.meta.minimum, filter.meta.maximum, a);
|
|
1347
|
-
case "isPropertyNames":
|
|
1348
|
-
return Schema.isPropertyNames(recur(filter.meta.propertyNames), a);
|
|
1349
|
-
// Arrays Meta
|
|
1350
|
-
case "isUnique":
|
|
1351
|
-
return Schema.isUnique(a);
|
|
1352
|
-
// Date Meta
|
|
1353
|
-
case "isDateValid":
|
|
1354
|
-
return Schema.isDateValid(a);
|
|
1355
|
-
case "isGreaterThanDate":
|
|
1356
|
-
return Schema.isGreaterThanDate(filter.meta.exclusiveMinimum, a);
|
|
1357
|
-
case "isGreaterThanOrEqualToDate":
|
|
1358
|
-
return Schema.isGreaterThanOrEqualToDate(filter.meta.minimum, a);
|
|
1359
|
-
case "isLessThanDate":
|
|
1360
|
-
return Schema.isLessThanDate(filter.meta.exclusiveMaximum, a);
|
|
1361
|
-
case "isLessThanOrEqualToDate":
|
|
1362
|
-
return Schema.isLessThanOrEqualToDate(filter.meta.maximum, a);
|
|
1363
|
-
case "isBetweenDate":
|
|
1364
|
-
return Schema.isBetweenDate(filter.meta, a);
|
|
1365
|
-
// Size Meta
|
|
1366
|
-
case "isMinSize":
|
|
1367
|
-
return Schema.isMinSize(filter.meta.minSize, a);
|
|
1368
|
-
case "isMaxSize":
|
|
1369
|
-
return Schema.isMaxSize(filter.meta.maxSize, a);
|
|
1370
|
-
case "isSizeBetween":
|
|
1371
|
-
return Schema.isSizeBetween(filter.meta.minimum, filter.meta.maximum, a);
|
|
1372
|
-
}
|
|
1373
|
-
}
|
|
376
|
+
export function fromJsonMultiDocument(input) {
|
|
377
|
+
return decodeMultiDocument(input);
|
|
1374
378
|
}
|
|
1375
379
|
/**
|
|
1376
|
-
*
|
|
380
|
+
* Reconstructs a runtime schema from a representation document.
|
|
1377
381
|
*
|
|
1378
382
|
* **When to use**
|
|
1379
383
|
*
|
|
1380
|
-
* Use when you
|
|
1381
|
-
* representation `Document`.
|
|
384
|
+
* Use when you have decoded or constructed a document whose declaration and check annotations may require revivers.
|
|
1382
385
|
*
|
|
1383
386
|
* **Gotchas**
|
|
1384
387
|
*
|
|
1385
|
-
*
|
|
1386
|
-
* semantics cannot be represented exactly in JSON Schema, and importing an
|
|
1387
|
-
* emitted JSON Schema may produce an equivalent approximation rather than the
|
|
1388
|
-
* original representation shape.
|
|
388
|
+
* Revivers are resolved locally by `id`; none are installed implicitly. Reviver results are used directly, and exceptions raised by a reviver pass through unchanged.
|
|
1389
389
|
*
|
|
1390
|
-
* **Example** (
|
|
390
|
+
* **Example** (Restoring a persisted schema)
|
|
1391
391
|
*
|
|
1392
|
-
* ```ts
|
|
392
|
+
* ```ts import.meta.vitest
|
|
1393
393
|
* import { Schema, SchemaRepresentation } from "effect"
|
|
1394
394
|
*
|
|
1395
|
-
* const
|
|
1396
|
-
* const
|
|
1397
|
-
*
|
|
1398
|
-
*
|
|
395
|
+
* const document = SchemaRepresentation.toRepresentation(Schema.Struct({ name: Schema.String }).ast)
|
|
396
|
+
* const persisted = SchemaRepresentation.toJson(document)
|
|
397
|
+
* const restored = SchemaRepresentation.fromJson(persisted)
|
|
398
|
+
* const schema = SchemaRepresentation.fromRepresentation(restored, { revivers: [] })
|
|
399
|
+
* const Person = Schema.make<Schema.Codec<{ readonly name: string }>>(schema.ast)
|
|
400
|
+
*
|
|
401
|
+
* Schema.decodeUnknownSync(Person)({ name: "Ada" }) // => { name: "Ada" }
|
|
1399
402
|
* ```
|
|
1400
403
|
*
|
|
1401
|
-
* @see {@link
|
|
1402
|
-
* @see {@link
|
|
1403
|
-
* @see {@link fromJsonSchemaDocument}
|
|
404
|
+
* @see {@link fromJson} for decoding a persisted document
|
|
405
|
+
* @see {@link fromRepresentations} for multiple roots sharing references
|
|
1404
406
|
*
|
|
1405
407
|
* @category transforming
|
|
1406
408
|
* @since 4.0.0
|
|
1407
409
|
*/
|
|
1408
|
-
export
|
|
410
|
+
export function fromRepresentation(document, options) {
|
|
411
|
+
return InternalFromRepresentation.fromRepresentation(document, options.revivers);
|
|
412
|
+
}
|
|
1409
413
|
/**
|
|
1410
|
-
*
|
|
1411
|
-
* multi-document.
|
|
414
|
+
* Reconstructs multiple runtime schemas from a representation multi-document.
|
|
1412
415
|
*
|
|
1413
416
|
* **When to use**
|
|
1414
417
|
*
|
|
1415
|
-
* Use when
|
|
1416
|
-
* so shared definitions stay in multi-document JSON Schema form.
|
|
418
|
+
* Use when multiple roots must be rebuilt in one shared reference environment.
|
|
1417
419
|
*
|
|
1418
420
|
* **Gotchas**
|
|
1419
421
|
*
|
|
1420
|
-
*
|
|
1421
|
-
* semantics cannot be represented exactly in JSON Schema, and importing an
|
|
1422
|
-
* emitted JSON Schema may produce equivalent approximations rather than the
|
|
1423
|
-
* original representation shapes.
|
|
422
|
+
* Only references reachable from a root are revived. Revivers are resolved locally by `id`; none are installed implicitly.
|
|
1424
423
|
*
|
|
1425
|
-
* @see {@link
|
|
1426
|
-
* @see {@link
|
|
1427
|
-
* @see {@link fromJsonSchemaMultiDocument}
|
|
424
|
+
* @see {@link fromJsonMultiDocument} for decoding a persisted multi-document
|
|
425
|
+
* @see {@link fromRepresentation} for a single root
|
|
1428
426
|
*
|
|
1429
427
|
* @category transforming
|
|
1430
428
|
* @since 4.0.0
|
|
1431
429
|
*/
|
|
1432
|
-
export
|
|
1433
|
-
|
|
1434
|
-
* Constructs a {@link Code} value from a runtime expression string and a
|
|
1435
|
-
* TypeScript type string.
|
|
1436
|
-
*
|
|
1437
|
-
* @see {@link Code}
|
|
1438
|
-
*
|
|
1439
|
-
* @category Code Generation
|
|
1440
|
-
* @since 4.0.0
|
|
1441
|
-
*/
|
|
1442
|
-
export function makeCode(runtime, Type) {
|
|
1443
|
-
return {
|
|
1444
|
-
runtime,
|
|
1445
|
-
Type
|
|
1446
|
-
};
|
|
1447
|
-
}
|
|
1448
|
-
/**
|
|
1449
|
-
* Generates TypeScript code strings from a {@link MultiDocument}.
|
|
1450
|
-
*
|
|
1451
|
-
* **When to use**
|
|
1452
|
-
*
|
|
1453
|
-
* Use when you need to produce source code for Effect Schema definitions from a
|
|
1454
|
-
* schema representation `MultiDocument`.
|
|
1455
|
-
*
|
|
1456
|
-
* **Details**
|
|
1457
|
-
*
|
|
1458
|
-
* `options.reviver` can customize code generation for {@link Declaration}
|
|
1459
|
-
* nodes. Return `undefined` to fall back to the default logic, which uses
|
|
1460
|
-
* `generation` annotations or the encoded schema. References are
|
|
1461
|
-
* topologically sorted so non-recursive definitions are emitted before their
|
|
1462
|
-
* dependents. `$ref` keys are converted to sanitized JavaScript identifiers.
|
|
1463
|
-
*
|
|
1464
|
-
* **Example** (Generating TypeScript code)
|
|
1465
|
-
*
|
|
1466
|
-
* ```ts
|
|
1467
|
-
* import { Schema, SchemaRepresentation } from "effect"
|
|
1468
|
-
*
|
|
1469
|
-
* const Person = Schema.Struct({
|
|
1470
|
-
* name: Schema.String,
|
|
1471
|
-
* age: Schema.Int
|
|
1472
|
-
* })
|
|
1473
|
-
*
|
|
1474
|
-
* const multi = SchemaRepresentation.toMultiDocument(
|
|
1475
|
-
* SchemaRepresentation.fromAST(Person.ast)
|
|
1476
|
-
* )
|
|
1477
|
-
* const codeDoc = SchemaRepresentation.toCodeDocument(multi)
|
|
1478
|
-
* console.log(codeDoc.codes[0].runtime)
|
|
1479
|
-
* // Schema.Struct({ ... })
|
|
1480
|
-
* ```
|
|
1481
|
-
*
|
|
1482
|
-
* @see {@link CodeDocument}
|
|
1483
|
-
* @see {@link MultiDocument}
|
|
1484
|
-
* @see {@link Reviver}
|
|
1485
|
-
*
|
|
1486
|
-
* @category Code Generation
|
|
1487
|
-
* @since 4.0.0
|
|
1488
|
-
*/
|
|
1489
|
-
export function toCodeDocument(multiDocument, options) {
|
|
1490
|
-
const artifacts = [];
|
|
1491
|
-
const ts = topologicalSort(multiDocument.references);
|
|
1492
|
-
// Phase 1: Build sanitization map with collision handling
|
|
1493
|
-
const sanitizedReferenceMap = new Map();
|
|
1494
|
-
const uniqueSanitizedReferences = new Set();
|
|
1495
|
-
const referenceCount = new Map();
|
|
1496
|
-
// Process all references first to build the map
|
|
1497
|
-
const allRefs = [...ts.nonRecursives.map(({
|
|
1498
|
-
$ref
|
|
1499
|
-
}) => $ref), ...Object.keys(ts.recursives)];
|
|
1500
|
-
for (const ref of allRefs) {
|
|
1501
|
-
ensureUniqueSanitized(ref);
|
|
1502
|
-
}
|
|
1503
|
-
// Phase 2: Use the map when processing references
|
|
1504
|
-
const nonRecursives = ts.nonRecursives.map(({
|
|
1505
|
-
$ref,
|
|
1506
|
-
representation
|
|
1507
|
-
}) => ({
|
|
1508
|
-
$ref: sanitizedReferenceMap.get($ref),
|
|
1509
|
-
code: recur(representation)
|
|
1510
|
-
}));
|
|
1511
|
-
const recursives = Rec.mapEntries(ts.recursives, (representation, $ref) => [sanitizedReferenceMap.get($ref), recur(representation)]);
|
|
1512
|
-
const codes = multiDocument.representations.map(recur);
|
|
1513
|
-
return {
|
|
1514
|
-
codes,
|
|
1515
|
-
references: {
|
|
1516
|
-
nonRecursives: nonRecursives.filter(({
|
|
1517
|
-
$ref
|
|
1518
|
-
}) => (referenceCount.get($ref) ?? 0) > 0),
|
|
1519
|
-
recursives: Rec.filter(recursives, (_, $ref) => (referenceCount.get($ref) ?? 0) > 0)
|
|
1520
|
-
},
|
|
1521
|
-
artifacts
|
|
1522
|
-
};
|
|
1523
|
-
function ensureUniqueSanitized(originalRef) {
|
|
1524
|
-
// Check if already mapped (consistency)
|
|
1525
|
-
const sanitized = sanitizedReferenceMap.get(originalRef);
|
|
1526
|
-
if (sanitized !== undefined) {
|
|
1527
|
-
return sanitized;
|
|
1528
|
-
}
|
|
1529
|
-
// Find unique sanitized name
|
|
1530
|
-
const seed = sanitizeJavaScriptIdentifier(originalRef);
|
|
1531
|
-
let candidate = seed;
|
|
1532
|
-
let suffix = 0;
|
|
1533
|
-
while (uniqueSanitizedReferences.has(candidate)) {
|
|
1534
|
-
candidate = `${seed}${++suffix}`;
|
|
1535
|
-
}
|
|
1536
|
-
uniqueSanitizedReferences.add(candidate);
|
|
1537
|
-
sanitizedReferenceMap.set(originalRef, candidate);
|
|
1538
|
-
return candidate;
|
|
1539
|
-
}
|
|
1540
|
-
function addSymbol(s) {
|
|
1541
|
-
const identifier = ensureUniqueSanitized("_symbol");
|
|
1542
|
-
const key = globalThis.Symbol.keyFor(s);
|
|
1543
|
-
const description = s.description;
|
|
1544
|
-
const generation = key === undefined ? makeCode(`Symbol(${description === undefined ? "" : format(description)})`, `typeof ${identifier}`) : makeCode(`Symbol.for(${format(key)})`, `typeof ${identifier}`);
|
|
1545
|
-
artifacts.push({
|
|
1546
|
-
_tag: "Symbol",
|
|
1547
|
-
identifier,
|
|
1548
|
-
generation
|
|
1549
|
-
});
|
|
1550
|
-
return identifier;
|
|
1551
|
-
}
|
|
1552
|
-
function addEnum(s) {
|
|
1553
|
-
const identifier = ensureUniqueSanitized("_Enum");
|
|
1554
|
-
artifacts.push({
|
|
1555
|
-
_tag: "Enum",
|
|
1556
|
-
identifier,
|
|
1557
|
-
generation: makeCode(`enum ${identifier} { ${s.enums.map(([name, value]) => `${format(name)}: ${format(value)}`).join(", ")} }`, `typeof ${identifier}`)
|
|
1558
|
-
});
|
|
1559
|
-
return identifier;
|
|
1560
|
-
}
|
|
1561
|
-
function addImport(importDeclaration) {
|
|
1562
|
-
if (!artifacts.some(a => a._tag === "Import" && a.importDeclaration === importDeclaration)) {
|
|
1563
|
-
artifacts.push({
|
|
1564
|
-
_tag: "Import",
|
|
1565
|
-
importDeclaration
|
|
1566
|
-
});
|
|
1567
|
-
}
|
|
1568
|
-
}
|
|
1569
|
-
function recur(s) {
|
|
1570
|
-
const g = on(s);
|
|
1571
|
-
switch (s._tag) {
|
|
1572
|
-
default:
|
|
1573
|
-
return makeCode(g.runtime + toRuntimeAnnotate(s.annotations) + toRuntimeBrand(s.annotations), g.Type + toTypeBrand(s.annotations));
|
|
1574
|
-
case "Reference":
|
|
1575
|
-
return g;
|
|
1576
|
-
case "Declaration":
|
|
1577
|
-
case "String":
|
|
1578
|
-
case "Number":
|
|
1579
|
-
case "BigInt":
|
|
1580
|
-
case "Arrays":
|
|
1581
|
-
case "Objects":
|
|
1582
|
-
case "Suspend":
|
|
1583
|
-
return makeCode(g.runtime + toRuntimeAnnotate(s.annotations) + toRuntimeBrand(s.annotations) + toRuntimeChecks(s.checks), g.Type + toTypeBrand(s.annotations) + toTypeChecks(s.checks));
|
|
1584
|
-
}
|
|
1585
|
-
}
|
|
1586
|
-
function on(s) {
|
|
1587
|
-
switch (s._tag) {
|
|
1588
|
-
case "Declaration":
|
|
1589
|
-
{
|
|
1590
|
-
// if there is a reviver, use it to generate the generation
|
|
1591
|
-
if (options?.reviver !== undefined) {
|
|
1592
|
-
// the reviver can return `undefined` to indicate that the generation should be generated by the default logic
|
|
1593
|
-
const out = options.reviver(s, recur);
|
|
1594
|
-
if (out !== undefined) {
|
|
1595
|
-
return out;
|
|
1596
|
-
}
|
|
1597
|
-
}
|
|
1598
|
-
// otherwise, use the generation from the annotations
|
|
1599
|
-
const generation = s.annotations?.generation;
|
|
1600
|
-
if (Predicate.isObject(generation) && typeof generation.runtime === "string" && typeof generation.Type === "string") {
|
|
1601
|
-
const typeParameters = s.typeParameters.map(recur);
|
|
1602
|
-
if (typeof generation.importDeclaration === "string") {
|
|
1603
|
-
addImport(generation.importDeclaration);
|
|
1604
|
-
}
|
|
1605
|
-
return makeCode(replacePlaceholders(generation.runtime, typeParameters.map(p => p.runtime)), replacePlaceholders(generation.Type, typeParameters.map(p => p.Type)));
|
|
1606
|
-
}
|
|
1607
|
-
// otherwise, use the generation from the encoded schema
|
|
1608
|
-
return recur(s.encodedSchema);
|
|
1609
|
-
}
|
|
1610
|
-
case "Reference":
|
|
1611
|
-
{
|
|
1612
|
-
const sanitized = ensureUniqueSanitized(s.$ref);
|
|
1613
|
-
referenceCount.set(sanitized, (referenceCount.get(sanitized) ?? 0) + 1);
|
|
1614
|
-
return makeCode(sanitized, sanitized);
|
|
1615
|
-
}
|
|
1616
|
-
case "Suspend":
|
|
1617
|
-
{
|
|
1618
|
-
const thunk = recur(s.thunk);
|
|
1619
|
-
return makeCode(`Schema.suspend((): Schema.Codec<${thunk.Type}> => ${thunk.runtime})`, thunk.Type);
|
|
1620
|
-
}
|
|
1621
|
-
case "Null":
|
|
1622
|
-
return makeCode(`Schema.Null`, "null");
|
|
1623
|
-
case "Undefined":
|
|
1624
|
-
return makeCode(`Schema.Undefined`, "undefined");
|
|
1625
|
-
case "Void":
|
|
1626
|
-
return makeCode(`Schema.Void`, "void");
|
|
1627
|
-
case "Never":
|
|
1628
|
-
return makeCode(`Schema.Never`, "never");
|
|
1629
|
-
case "Unknown":
|
|
1630
|
-
return makeCode(`Schema.Unknown`, "unknown");
|
|
1631
|
-
case "Any":
|
|
1632
|
-
return makeCode(`Schema.Any`, "any");
|
|
1633
|
-
case "Number":
|
|
1634
|
-
return makeCode(`Schema.Number`, "number");
|
|
1635
|
-
case "Boolean":
|
|
1636
|
-
return makeCode(`Schema.Boolean`, "boolean");
|
|
1637
|
-
case "BigInt":
|
|
1638
|
-
return makeCode(`Schema.BigInt`, "bigint");
|
|
1639
|
-
case "Symbol":
|
|
1640
|
-
return makeCode(`Schema.Symbol`, "symbol");
|
|
1641
|
-
case "String":
|
|
1642
|
-
{
|
|
1643
|
-
const contentMediaType = s.contentMediaType;
|
|
1644
|
-
const contentSchema = s.contentSchema;
|
|
1645
|
-
if (contentMediaType === "application/json" && contentSchema !== undefined) {
|
|
1646
|
-
return makeCode(`Schema.fromJsonString(${recur(contentSchema)})`, "string");
|
|
1647
|
-
} else {
|
|
1648
|
-
return makeCode(`Schema.String`, "string");
|
|
1649
|
-
}
|
|
1650
|
-
}
|
|
1651
|
-
case "Literal":
|
|
1652
|
-
{
|
|
1653
|
-
const literal = format(s.literal);
|
|
1654
|
-
return makeCode(`Schema.Literal(${literal})`, literal);
|
|
1655
|
-
}
|
|
1656
|
-
case "UniqueSymbol":
|
|
1657
|
-
{
|
|
1658
|
-
const identifier = addSymbol(s.symbol);
|
|
1659
|
-
return makeCode(`Schema.UniqueSymbol(${identifier})`, `typeof ${identifier}`);
|
|
1660
|
-
}
|
|
1661
|
-
case "ObjectKeyword":
|
|
1662
|
-
return makeCode(`Schema.ObjectKeyword`, "object");
|
|
1663
|
-
case "Enum":
|
|
1664
|
-
{
|
|
1665
|
-
const identifier = addEnum(s);
|
|
1666
|
-
return makeCode(`Schema.Enum(${identifier})`, `typeof ${identifier}`);
|
|
1667
|
-
}
|
|
1668
|
-
case "TemplateLiteral":
|
|
1669
|
-
{
|
|
1670
|
-
const parts = s.parts.map(recur);
|
|
1671
|
-
const type = toTypeParts(s.parts).map(p => "`" + p + "`").join(" | ");
|
|
1672
|
-
return makeCode(`Schema.TemplateLiteral([${parts.map(p => p.runtime).join(", ")}])`, type);
|
|
1673
|
-
}
|
|
1674
|
-
case "Arrays":
|
|
1675
|
-
{
|
|
1676
|
-
const elements = s.elements.map(e => {
|
|
1677
|
-
return {
|
|
1678
|
-
isOptional: e.isOptional,
|
|
1679
|
-
type: recur(e.type),
|
|
1680
|
-
annotations: e.annotations
|
|
1681
|
-
};
|
|
1682
|
-
});
|
|
1683
|
-
const rest = s.rest.map(recur);
|
|
1684
|
-
if (Arr.isArrayNonEmpty(rest)) {
|
|
1685
|
-
const item = rest[0];
|
|
1686
|
-
if (elements.length === 0 && rest.length === 1) {
|
|
1687
|
-
return makeCode(`Schema.Array(${item.runtime})`, `ReadonlyArray<${item.Type}>`);
|
|
1688
|
-
}
|
|
1689
|
-
const post = rest.slice(1);
|
|
1690
|
-
return makeCode(`Schema.TupleWithRest(Schema.Tuple([${elements.map(e => toRuntimeIsOptional(e.isOptional, e.type.runtime) + toRuntimeAnnotateKey(e.annotations)).join(", ")}]), [${rest.map(r => r.runtime).join(", ")}])`, `readonly [${elements.map(e => toTypeIsOptional(e.isOptional, e.type.Type)).join(", ")}, ...Array<${item.Type}>${post.length > 0 ? `, ${post.map(p => p.Type).join(", ")}` : ""}]`);
|
|
1691
|
-
}
|
|
1692
|
-
return makeCode(`Schema.Tuple([${elements.map(e => toRuntimeIsOptional(e.isOptional, e.type.runtime) + toRuntimeAnnotateKey(e.annotations)).join(", ")}])`, `readonly [${elements.map(e => toTypeIsOptional(e.isOptional, e.type.Type)).join(", ")}]`);
|
|
1693
|
-
}
|
|
1694
|
-
case "Objects":
|
|
1695
|
-
{
|
|
1696
|
-
const pss = s.propertySignatures.map(p => {
|
|
1697
|
-
const isSymbol = typeof p.name === "symbol";
|
|
1698
|
-
const name = isSymbol ? addSymbol(p.name) : formatPropertyKey(p.name);
|
|
1699
|
-
const nameType = toTypeIsOptional(p.isOptional, toTypeIsMutable(p.isMutable, isSymbol ? `[typeof ${name}]` : name));
|
|
1700
|
-
const type = recur(p.type);
|
|
1701
|
-
return makeCode(`${isSymbol ? `[${name}]` : name}: ${toRuntimeIsOptional(p.isOptional, toRuntimeIsMutable(p.isMutable, type.runtime))}` + toRuntimeAnnotateKey(p.annotations), `${nameType}: ${type.Type}`);
|
|
1702
|
-
});
|
|
1703
|
-
const iss = s.indexSignatures.map(is => {
|
|
1704
|
-
return {
|
|
1705
|
-
parameter: recur(is.parameter),
|
|
1706
|
-
type: recur(is.type)
|
|
1707
|
-
};
|
|
1708
|
-
});
|
|
1709
|
-
if (iss.length === 0) {
|
|
1710
|
-
// 1) Only properties -> Struct
|
|
1711
|
-
return makeCode(`Schema.Struct({ ${pss.map(p => p.runtime).join(", ")} })`, `{ ${pss.map(p => p.Type).join(", ")} }`);
|
|
1712
|
-
} else if (pss.length === 0 && iss.length === 1) {
|
|
1713
|
-
// 2) Only one index signature and no properties -> Record
|
|
1714
|
-
return makeCode(`Schema.Record(${iss[0].parameter.runtime}, ${iss[0].type.runtime})`, `{ readonly [x: ${iss[0].parameter.Type}]: ${iss[0].type.Type} }`);
|
|
1715
|
-
} else {
|
|
1716
|
-
// 3) Properties + index signatures -> StructWithRest
|
|
1717
|
-
return makeCode(`Schema.StructWithRest(Schema.Struct({ ${pss.map(p => p.runtime).join(", ")} }), [${iss.map(is => `Schema.Record(${is.parameter.runtime}, ${is.type.runtime})`).join(", ")}])`, `{ ${pss.map(p => p.Type).join(", ")}, ${iss.map(is => `readonly [x: ${is.parameter.Type}]: ${is.type.Type}`).join(", ")} }`);
|
|
1718
|
-
}
|
|
1719
|
-
}
|
|
1720
|
-
case "Union":
|
|
1721
|
-
{
|
|
1722
|
-
if (s.types.length === 0) {
|
|
1723
|
-
return makeCode("Schema.Never", "never");
|
|
1724
|
-
}
|
|
1725
|
-
if (s.types.every(t => t._tag === "Literal")) {
|
|
1726
|
-
const literals = s.types.map(l => format(l.literal));
|
|
1727
|
-
if (literals.length === 1) {
|
|
1728
|
-
return makeCode(`Schema.Literal(${literals[0]})`, literals[0]);
|
|
1729
|
-
}
|
|
1730
|
-
return makeCode(`Schema.Literals([${literals.join(", ")}])`, literals.join(" | "));
|
|
1731
|
-
}
|
|
1732
|
-
const mode = s.mode === "anyOf" ? "" : `, { mode: "oneOf" }`;
|
|
1733
|
-
const types = s.types.map(t => recur(t));
|
|
1734
|
-
return makeCode(`Schema.Union([${types.map(t => t.runtime).join(", ")}]${mode})`, types.map(t => t.Type).join(" | "));
|
|
1735
|
-
}
|
|
1736
|
-
}
|
|
1737
|
-
}
|
|
1738
|
-
function toTypeBrand(annotations) {
|
|
1739
|
-
const brands = collectBrands(annotations);
|
|
1740
|
-
if (brands.length === 0) return "";
|
|
1741
|
-
addImport(`import type * as Brand from "effect/Brand"`);
|
|
1742
|
-
return brands.map(b => ` & Brand.Brand<${format(b)}>`).join("");
|
|
1743
|
-
}
|
|
1744
|
-
function toTypeChecks(checks) {
|
|
1745
|
-
return checks.map(c => toTypeCheck(c)).join("");
|
|
1746
|
-
}
|
|
1747
|
-
function toTypeCheck(check) {
|
|
1748
|
-
switch (check._tag) {
|
|
1749
|
-
case "Filter":
|
|
1750
|
-
return toTypeBrand(check.annotations);
|
|
1751
|
-
case "FilterGroup":
|
|
1752
|
-
{
|
|
1753
|
-
return toTypeChecks(check.checks);
|
|
1754
|
-
}
|
|
1755
|
-
}
|
|
1756
|
-
}
|
|
1757
|
-
function toRuntimeChecks(checks) {
|
|
1758
|
-
return checks.map(c => `.check(${toRuntimeCheck(c)})` + toRuntimeBrand(c.annotations)).join("");
|
|
1759
|
-
}
|
|
1760
|
-
function toRuntimeCheck(check) {
|
|
1761
|
-
switch (check._tag) {
|
|
1762
|
-
case "Filter":
|
|
1763
|
-
return toRuntimeFilter(check);
|
|
1764
|
-
case "FilterGroup":
|
|
1765
|
-
{
|
|
1766
|
-
const a = toRuntimeAnnotations(check.annotations);
|
|
1767
|
-
const ca = a === "" ? "" : `, ${a}`;
|
|
1768
|
-
return `Schema.makeFilterGroup([${check.checks.map(c => toRuntimeCheck(c)).join(", ")}]${ca})`;
|
|
1769
|
-
}
|
|
1770
|
-
}
|
|
1771
|
-
}
|
|
1772
|
-
function toRuntimeFilter(filter) {
|
|
1773
|
-
const a = toRuntimeAnnotations(filter.annotations);
|
|
1774
|
-
const ca = a === "" ? "" : `, ${a}`;
|
|
1775
|
-
switch (filter.meta._tag) {
|
|
1776
|
-
case "isTrimmed":
|
|
1777
|
-
case "isGUID":
|
|
1778
|
-
case "isULID":
|
|
1779
|
-
case "isBase64":
|
|
1780
|
-
case "isBase64Url":
|
|
1781
|
-
case "isUppercased":
|
|
1782
|
-
case "isLowercased":
|
|
1783
|
-
case "isCapitalized":
|
|
1784
|
-
case "isUncapitalized":
|
|
1785
|
-
case "isFinite":
|
|
1786
|
-
case "isInt":
|
|
1787
|
-
case "isUnique":
|
|
1788
|
-
case "isDateValid":
|
|
1789
|
-
return `Schema.${filter.meta._tag}(${a})`;
|
|
1790
|
-
case "isStringFinite":
|
|
1791
|
-
case "isStringBigInt":
|
|
1792
|
-
case "isStringSymbol":
|
|
1793
|
-
case "isPattern":
|
|
1794
|
-
return `Schema.${filter.meta._tag}(${toRuntimeRegExp(filter.meta.regExp)}${ca})`;
|
|
1795
|
-
case "isMinLength":
|
|
1796
|
-
return `Schema.isMinLength(${filter.meta.minLength}${ca})`;
|
|
1797
|
-
case "isMaxLength":
|
|
1798
|
-
return `Schema.isMaxLength(${filter.meta.maxLength}${ca})`;
|
|
1799
|
-
case "isLengthBetween":
|
|
1800
|
-
return `Schema.isLengthBetween(${filter.meta.minimum}, ${filter.meta.maximum}${ca})`;
|
|
1801
|
-
case "isUUID":
|
|
1802
|
-
return `Schema.isUUID(${filter.meta.version}${ca})`;
|
|
1803
|
-
case "isStartsWith":
|
|
1804
|
-
return `Schema.isStartsWith(${format(filter.meta.startsWith)}${ca})`;
|
|
1805
|
-
case "isEndsWith":
|
|
1806
|
-
return `Schema.isEndsWith(${format(filter.meta.endsWith)}${ca})`;
|
|
1807
|
-
case "isIncludes":
|
|
1808
|
-
return `Schema.isIncludes(${format(filter.meta.includes)}${ca})`;
|
|
1809
|
-
case "isGreaterThan":
|
|
1810
|
-
case "isGreaterThanBigInt":
|
|
1811
|
-
case "isGreaterThanDate":
|
|
1812
|
-
return `Schema.${filter.meta._tag}(${toRuntimeValue(filter.meta.exclusiveMinimum)}${ca})`;
|
|
1813
|
-
case "isGreaterThanOrEqualTo":
|
|
1814
|
-
case "isGreaterThanOrEqualToBigInt":
|
|
1815
|
-
case "isGreaterThanOrEqualToDate":
|
|
1816
|
-
return `Schema.${filter.meta._tag}(${toRuntimeValue(filter.meta.minimum)}${ca})`;
|
|
1817
|
-
case "isLessThan":
|
|
1818
|
-
case "isLessThanBigInt":
|
|
1819
|
-
case "isLessThanDate":
|
|
1820
|
-
return `Schema.${filter.meta._tag}(${toRuntimeValue(filter.meta.exclusiveMaximum)}${ca})`;
|
|
1821
|
-
case "isLessThanOrEqualTo":
|
|
1822
|
-
case "isLessThanOrEqualToBigInt":
|
|
1823
|
-
case "isLessThanOrEqualToDate":
|
|
1824
|
-
return `Schema.${filter.meta._tag}(${toRuntimeValue(filter.meta.maximum)}${ca})`;
|
|
1825
|
-
case "isBetween":
|
|
1826
|
-
case "isBetweenBigInt":
|
|
1827
|
-
case "isBetweenDate":
|
|
1828
|
-
return `Schema.${filter.meta._tag}({ minimum: ${toRuntimeValue(filter.meta.minimum)}, maximum: ${toRuntimeValue(filter.meta.maximum)}, exclusiveMinimum: ${toRuntimeValue(filter.meta.exclusiveMinimum)}, exclusiveMaximum: ${toRuntimeValue(filter.meta.exclusiveMaximum)}${ca})`;
|
|
1829
|
-
case "isMultipleOf":
|
|
1830
|
-
return `Schema.isMultipleOf(${filter.meta.divisor}${ca})`;
|
|
1831
|
-
case "isMinProperties":
|
|
1832
|
-
return `Schema.isMinProperties(${filter.meta.minProperties}${ca})`;
|
|
1833
|
-
case "isMaxProperties":
|
|
1834
|
-
return `Schema.isMaxProperties(${filter.meta.maxProperties}${ca})`;
|
|
1835
|
-
case "isPropertiesLengthBetween":
|
|
1836
|
-
return `Schema.isPropertiesLengthBetween(${filter.meta.minimum}, ${filter.meta.maximum}${ca})`;
|
|
1837
|
-
case "isPropertyNames":
|
|
1838
|
-
return `Schema.isPropertyNames(${recur(filter.meta.propertyNames).runtime}${ca})`;
|
|
1839
|
-
case "isMinSize":
|
|
1840
|
-
return `Schema.isMinSize(${filter.meta.minSize}${ca})`;
|
|
1841
|
-
case "isMaxSize":
|
|
1842
|
-
return `Schema.isMaxSize(${filter.meta.maxSize}${ca})`;
|
|
1843
|
-
case "isSizeBetween":
|
|
1844
|
-
return `Schema.isSizeBetween(${filter.meta.minimum}, ${filter.meta.maximum}${ca})`;
|
|
1845
|
-
}
|
|
1846
|
-
}
|
|
1847
|
-
}
|
|
1848
|
-
const VALID_ASCII_UPPER_JAVASCRIPT_IDENTIFIER_REGEXP = /^[A-Z_$][A-Za-z0-9_$]*$/;
|
|
1849
|
-
/**
|
|
1850
|
-
* Converts an arbitrary string into a valid (ASCII) JavaScript identifier
|
|
1851
|
-
* starting with an uppercase letter, `$`, or `_`.
|
|
1852
|
-
*
|
|
1853
|
-
* - Replaces invalid identifier characters with `_`
|
|
1854
|
-
* - Uppercases a leading ASCII letter
|
|
1855
|
-
* - If the first character is a digit, prefixes `_`
|
|
1856
|
-
* - Empty input becomes `_`
|
|
1857
|
-
*
|
|
1858
|
-
* @internal
|
|
1859
|
-
*/
|
|
1860
|
-
export function sanitizeJavaScriptIdentifier(s) {
|
|
1861
|
-
if (s.length === 0) return "_";
|
|
1862
|
-
if (VALID_ASCII_UPPER_JAVASCRIPT_IDENTIFIER_REGEXP.test(s)) return s;
|
|
1863
|
-
const out = [];
|
|
1864
|
-
let needsPrefix = false;
|
|
1865
|
-
let i = 0;
|
|
1866
|
-
for (const ch of s) {
|
|
1867
|
-
if (i === 0) {
|
|
1868
|
-
if (ch === "_" || ch === "$" || ch >= "A" && ch <= "Z") {
|
|
1869
|
-
out.push(ch);
|
|
1870
|
-
} else if (ch >= "a" && ch <= "z") {
|
|
1871
|
-
out.push(ch.toUpperCase());
|
|
1872
|
-
} else if (ch >= "0" && ch <= "9") {
|
|
1873
|
-
out.push(ch);
|
|
1874
|
-
needsPrefix = true;
|
|
1875
|
-
} else {
|
|
1876
|
-
out.push("_");
|
|
1877
|
-
}
|
|
1878
|
-
} else {
|
|
1879
|
-
out.push(isAsciiIdPart(ch) ? ch : "_");
|
|
1880
|
-
}
|
|
1881
|
-
i++;
|
|
1882
|
-
}
|
|
1883
|
-
return needsPrefix ? "_" + out.join("") : out.join("");
|
|
1884
|
-
}
|
|
1885
|
-
function isAsciiIdStart(ch) {
|
|
1886
|
-
return ch === "_" || ch === "$" || ch >= "A" && ch <= "Z" || ch >= "a" && ch <= "z";
|
|
1887
|
-
}
|
|
1888
|
-
function isAsciiIdPart(ch) {
|
|
1889
|
-
return isAsciiIdStart(ch) || ch >= "0" && ch <= "9";
|
|
1890
|
-
}
|
|
1891
|
-
function replacePlaceholders(template, items) {
|
|
1892
|
-
let i = 0;
|
|
1893
|
-
return template.replace(/\?/g, () => items[i++]);
|
|
1894
|
-
}
|
|
1895
|
-
function toTypeParts(parts) {
|
|
1896
|
-
if (parts.length === 0) {
|
|
1897
|
-
return [""];
|
|
1898
|
-
}
|
|
1899
|
-
const [first, ...rest] = parts;
|
|
1900
|
-
const restPatterns = toTypeParts(rest);
|
|
1901
|
-
return toTypePart(first).flatMap(f => restPatterns.map(r => f + r));
|
|
1902
|
-
}
|
|
1903
|
-
function toTypePart(r) {
|
|
1904
|
-
switch (r._tag) {
|
|
1905
|
-
case "Literal":
|
|
1906
|
-
return [globalThis.String(r.literal)];
|
|
1907
|
-
case "String":
|
|
1908
|
-
return ["${string}"];
|
|
1909
|
-
case "Number":
|
|
1910
|
-
return ["${number}"];
|
|
1911
|
-
case "BigInt":
|
|
1912
|
-
return ["${bigint}"];
|
|
1913
|
-
case "TemplateLiteral":
|
|
1914
|
-
return toTypeParts(r.parts);
|
|
1915
|
-
case "Union":
|
|
1916
|
-
return r.types.flatMap(toTypePart);
|
|
1917
|
-
default:
|
|
1918
|
-
return [];
|
|
1919
|
-
}
|
|
1920
|
-
}
|
|
1921
|
-
const toCodeAnnotationsBlacklist = /*#__PURE__*/new Set([...toJsonAnnotationsBlacklist, "typeConstructor", "generation", "brands"]);
|
|
1922
|
-
function toRuntimeAnnotations(annotations) {
|
|
1923
|
-
if (!annotations) return "";
|
|
1924
|
-
const entries = [];
|
|
1925
|
-
for (const [key, value] of Object.entries(annotations)) {
|
|
1926
|
-
if (toCodeAnnotationsBlacklist.has(key)) continue;
|
|
1927
|
-
entries.push(`${formatPropertyKey(key)}: ${format(value)}`);
|
|
1928
|
-
}
|
|
1929
|
-
if (entries.length === 0) return "";
|
|
1930
|
-
return `{ ${entries.join(", ")} }`;
|
|
1931
|
-
}
|
|
1932
|
-
function toRuntimeBrand(annotations) {
|
|
1933
|
-
const brands = collectBrands(annotations);
|
|
1934
|
-
return brands.length > 0 ? `.pipe(${brands.map(b => `Schema.brand(${format(b)})`).join(", ")})` : "";
|
|
1935
|
-
}
|
|
1936
|
-
function toRuntimeAnnotate(annotations) {
|
|
1937
|
-
const s = toRuntimeAnnotations(annotations);
|
|
1938
|
-
return s === "" ? "" : `.annotate(${s})`;
|
|
1939
|
-
}
|
|
1940
|
-
function toRuntimeAnnotateKey(annotations) {
|
|
1941
|
-
const s = toRuntimeAnnotations(annotations);
|
|
1942
|
-
return s === "" ? "" : `.annotateKey(${s})`;
|
|
1943
|
-
}
|
|
1944
|
-
function toRuntimeIsOptional(isOptional, runtime) {
|
|
1945
|
-
return isOptional ? `Schema.optionalKey(${runtime})` : runtime;
|
|
1946
|
-
}
|
|
1947
|
-
function toTypeIsOptional(isOptional, type) {
|
|
1948
|
-
return isOptional ? `${type}?` : type;
|
|
1949
|
-
}
|
|
1950
|
-
function toRuntimeIsMutable(isMutable, runtime) {
|
|
1951
|
-
return isMutable ? `Schema.mutableKey(${runtime})` : runtime;
|
|
1952
|
-
}
|
|
1953
|
-
function toTypeIsMutable(isMutable, type) {
|
|
1954
|
-
return isMutable ? type : `readonly ${type}`;
|
|
1955
|
-
}
|
|
1956
|
-
function toRuntimeValue(value) {
|
|
1957
|
-
if (value instanceof Date) {
|
|
1958
|
-
return `new Date(${value.getTime()})`;
|
|
1959
|
-
}
|
|
1960
|
-
return format(value);
|
|
1961
|
-
}
|
|
1962
|
-
function toRuntimeRegExp(regExp) {
|
|
1963
|
-
const args = [format(regExp.source)];
|
|
1964
|
-
const flags = regExp.flags.trim();
|
|
1965
|
-
if (flags !== "") {
|
|
1966
|
-
args.push(format(flags));
|
|
1967
|
-
}
|
|
1968
|
-
return `new RegExp(${args.join(", ")})`;
|
|
430
|
+
export function fromRepresentations(document, options) {
|
|
431
|
+
return InternalFromRepresentation.fromRepresentations(document, options.revivers);
|
|
1969
432
|
}
|
|
1970
433
|
/**
|
|
1971
|
-
*
|
|
434
|
+
* Imports a JSON Schema Draft 2020-12 document as a runtime schema.
|
|
1972
435
|
*
|
|
1973
436
|
* **When to use**
|
|
1974
437
|
*
|
|
1975
|
-
* Use when you need to
|
|
1976
|
-
* Effect schema representation system.
|
|
1977
|
-
*
|
|
1978
|
-
* **Details**
|
|
1979
|
-
*
|
|
1980
|
-
* `options.onEnter` is an optional hook called on each JSON Schema node before
|
|
1981
|
-
* processing, allowing pre-transformation.
|
|
438
|
+
* Use when you need to validate or transform values described by an external JSON Schema document.
|
|
1982
439
|
*
|
|
1983
440
|
* **Gotchas**
|
|
1984
441
|
*
|
|
1985
|
-
*
|
|
1986
|
-
*
|
|
1987
|
-
*
|
|
1988
|
-
*
|
|
442
|
+
* Import is best-effort. Built-in declarations and checks are reconstructed with importer-owned revivers. Pattern
|
|
443
|
+
* constraints reached during translation cause an error by default. Use `patterns: "apply"` only for trusted documents,
|
|
444
|
+
* or `patterns: "ignore"` to weaken validation explicitly. Callback results are used directly, and exceptions raised by a
|
|
445
|
+
* callback pass through unchanged.
|
|
1989
446
|
*
|
|
1990
|
-
*
|
|
1991
|
-
*
|
|
1992
|
-
*
|
|
1993
|
-
* @see {@link Document}
|
|
1994
|
-
* @see {@link toJsonSchemaDocument}
|
|
1995
|
-
* @see {@link fromJsonSchemaMultiDocument}
|
|
447
|
+
* @see {@link fromJsonSchemaMultiDocument} for multiple roots sharing definitions
|
|
448
|
+
* @see {@link toRepresentation} for converting the result to a representation document
|
|
1996
449
|
*
|
|
1997
450
|
* @category constructors
|
|
1998
451
|
* @since 4.0.0
|
|
1999
452
|
*/
|
|
2000
453
|
export function fromJsonSchemaDocument(document, options) {
|
|
2001
|
-
|
|
2002
|
-
references,
|
|
2003
|
-
representations: schemas
|
|
2004
|
-
} = fromJsonSchemaMultiDocument({
|
|
2005
|
-
dialect: document.dialect,
|
|
2006
|
-
schemas: [document.schema],
|
|
2007
|
-
definitions: document.definitions
|
|
2008
|
-
}, options);
|
|
2009
|
-
return {
|
|
2010
|
-
representation: schemas[0],
|
|
2011
|
-
references
|
|
2012
|
-
};
|
|
454
|
+
return InternalFromJsonSchemaDocument.fromJsonSchemaDocument(document, options);
|
|
2013
455
|
}
|
|
2014
456
|
/**
|
|
2015
|
-
*
|
|
2016
|
-
* {@link MultiDocument}.
|
|
457
|
+
* Imports multiple JSON Schema Draft 2020-12 roots as runtime schemas with shared definitions.
|
|
2017
458
|
*
|
|
2018
459
|
* **When to use**
|
|
2019
460
|
*
|
|
2020
|
-
* Use when
|
|
2021
|
-
* schemas share definitions.
|
|
2022
|
-
*
|
|
2023
|
-
* **Details**
|
|
2024
|
-
*
|
|
2025
|
-
* `options.onEnter` is an optional hook called on each JSON Schema node before
|
|
2026
|
-
* processing.
|
|
461
|
+
* Use when multiple imported roots share reachable definitions, aliases, or recursion.
|
|
2027
462
|
*
|
|
2028
463
|
* **Gotchas**
|
|
2029
464
|
*
|
|
2030
|
-
*
|
|
2031
|
-
*
|
|
2032
|
-
*
|
|
2033
|
-
* rather than the original representation shapes.
|
|
465
|
+
* Only definitions reachable from a root are translated. Pattern constraints reached during translation cause an error
|
|
466
|
+
* by default. Use `patterns: "apply"` only for trusted documents, or `patterns: "ignore"` to weaken validation explicitly.
|
|
467
|
+
* Callback results are used directly, and exceptions raised by a callback pass through unchanged.
|
|
2034
468
|
*
|
|
2035
|
-
*
|
|
2036
|
-
*
|
|
2037
|
-
* @see {@link MultiDocument}
|
|
2038
|
-
* @see {@link toJsonSchemaMultiDocument}
|
|
2039
|
-
* @see {@link fromJsonSchemaDocument}
|
|
469
|
+
* @see {@link fromJsonSchemaDocument} for a single root
|
|
470
|
+
* @see {@link toRepresentations} for converting the returned schema ASTs to a representation document
|
|
2040
471
|
*
|
|
2041
472
|
* @category constructors
|
|
2042
473
|
* @since 4.0.0
|
|
2043
474
|
*/
|
|
2044
475
|
export function fromJsonSchemaMultiDocument(document, options) {
|
|
2045
|
-
|
|
2046
|
-
const references = {};
|
|
2047
|
-
const resolvedReferences = new Map();
|
|
2048
|
-
function resolveReference($ref) {
|
|
2049
|
-
const definition = document.definitions[$ref];
|
|
2050
|
-
if (definition === undefined) {
|
|
2051
|
-
throw new Error(`Reference ${$ref} not found`);
|
|
2052
|
-
}
|
|
2053
|
-
const resolved = resolvedReferences.get($ref);
|
|
2054
|
-
if (resolved === null) {
|
|
2055
|
-
throw new Error(`Circular reference detected: ${$ref}`);
|
|
2056
|
-
}
|
|
2057
|
-
if (resolved !== undefined) return resolved;
|
|
2058
|
-
resolvedReferences.set($ref, null);
|
|
2059
|
-
const value = recur(definition);
|
|
2060
|
-
const out = value._tag === "Reference" ? resolveReference(value.$ref) : value;
|
|
2061
|
-
resolvedReferences.set($ref, out);
|
|
2062
|
-
return out;
|
|
2063
|
-
}
|
|
2064
|
-
for (const [identifier, definition] of Object.entries(document.definitions)) {
|
|
2065
|
-
definitionIdentifier = identifier;
|
|
2066
|
-
references[identifier] = unknownToJson(recur(definition));
|
|
2067
|
-
}
|
|
2068
|
-
definitionIdentifier = undefined;
|
|
2069
|
-
const representations = Arr.map(document.schemas, schema => unknownToJson(recur(schema)));
|
|
2070
|
-
return {
|
|
2071
|
-
representations,
|
|
2072
|
-
references
|
|
2073
|
-
};
|
|
2074
|
-
function recur(u) {
|
|
2075
|
-
if (u === false) return never;
|
|
2076
|
-
if (!Predicate.isObject(u)) return unknown;
|
|
2077
|
-
let js = options?.onEnter?.(u) ?? u;
|
|
2078
|
-
if (Array.isArray(js.type)) {
|
|
2079
|
-
if (js.type.every(isType)) {
|
|
2080
|
-
const {
|
|
2081
|
-
type,
|
|
2082
|
-
...rest
|
|
2083
|
-
} = js;
|
|
2084
|
-
js = {
|
|
2085
|
-
anyOf: type.map(type => ({
|
|
2086
|
-
type
|
|
2087
|
-
})),
|
|
2088
|
-
...rest
|
|
2089
|
-
};
|
|
2090
|
-
} else {
|
|
2091
|
-
js = {};
|
|
2092
|
-
}
|
|
2093
|
-
}
|
|
2094
|
-
let out = on(js);
|
|
2095
|
-
const annotations = collectAnnotations(js);
|
|
2096
|
-
if (annotations !== undefined) {
|
|
2097
|
-
out = combine(out, {
|
|
2098
|
-
_tag: "Unknown",
|
|
2099
|
-
annotations
|
|
2100
|
-
});
|
|
2101
|
-
}
|
|
2102
|
-
if (Array.isArray(js.allOf)) {
|
|
2103
|
-
out = js.allOf.reduce((acc, curr) => combine(acc, recur(curr)), out);
|
|
2104
|
-
}
|
|
2105
|
-
if (Array.isArray(js.anyOf)) {
|
|
2106
|
-
out = combine({
|
|
2107
|
-
_tag: "Union",
|
|
2108
|
-
types: js.anyOf.map(type => recur(type)),
|
|
2109
|
-
mode: "anyOf"
|
|
2110
|
-
}, out);
|
|
2111
|
-
}
|
|
2112
|
-
if (Array.isArray(js.oneOf)) {
|
|
2113
|
-
out = combine({
|
|
2114
|
-
_tag: "Union",
|
|
2115
|
-
types: js.oneOf.map(type => recur(type)),
|
|
2116
|
-
mode: "oneOf"
|
|
2117
|
-
}, out);
|
|
2118
|
-
}
|
|
2119
|
-
return out;
|
|
2120
|
-
}
|
|
2121
|
-
function on(js) {
|
|
2122
|
-
if (typeof js.$ref === "string") {
|
|
2123
|
-
const $ref = js.$ref.slice(2).split("/").at(-1);
|
|
2124
|
-
if ($ref !== undefined) {
|
|
2125
|
-
const reference = {
|
|
2126
|
-
_tag: "Reference",
|
|
2127
|
-
$ref: unescapeToken($ref)
|
|
2128
|
-
};
|
|
2129
|
-
if (definitionIdentifier === $ref) {
|
|
2130
|
-
return {
|
|
2131
|
-
_tag: "Suspend",
|
|
2132
|
-
thunk: reference,
|
|
2133
|
-
checks: []
|
|
2134
|
-
};
|
|
2135
|
-
} else {
|
|
2136
|
-
return reference;
|
|
2137
|
-
}
|
|
2138
|
-
}
|
|
2139
|
-
} else if ("const" in js) {
|
|
2140
|
-
if (isLiteralValue(js.const)) {
|
|
2141
|
-
return {
|
|
2142
|
-
_tag: "Literal",
|
|
2143
|
-
literal: js.const
|
|
2144
|
-
};
|
|
2145
|
-
} else if (js.const === null) {
|
|
2146
|
-
return null_;
|
|
2147
|
-
}
|
|
2148
|
-
} else if (Array.isArray(js.enum)) {
|
|
2149
|
-
const types = [];
|
|
2150
|
-
for (const e of js.enum) {
|
|
2151
|
-
if (isLiteralValue(e)) {
|
|
2152
|
-
types.push({
|
|
2153
|
-
_tag: "Literal",
|
|
2154
|
-
literal: e
|
|
2155
|
-
});
|
|
2156
|
-
} else if (e === null) {
|
|
2157
|
-
types.push(null_);
|
|
2158
|
-
} else {
|
|
2159
|
-
types.push(recur(e));
|
|
2160
|
-
}
|
|
2161
|
-
}
|
|
2162
|
-
if (types.length === 1) {
|
|
2163
|
-
return types[0];
|
|
2164
|
-
} else {
|
|
2165
|
-
return {
|
|
2166
|
-
_tag: "Union",
|
|
2167
|
-
types,
|
|
2168
|
-
mode: "anyOf"
|
|
2169
|
-
};
|
|
2170
|
-
}
|
|
2171
|
-
}
|
|
2172
|
-
const type = isType(js.type) ? js.type : getType(js);
|
|
2173
|
-
if (type !== undefined) {
|
|
2174
|
-
switch (type) {
|
|
2175
|
-
case "null":
|
|
2176
|
-
return null_;
|
|
2177
|
-
case "string":
|
|
2178
|
-
{
|
|
2179
|
-
const checks = collectStringChecks(js);
|
|
2180
|
-
if (checks.length > 0) {
|
|
2181
|
-
return {
|
|
2182
|
-
...string,
|
|
2183
|
-
checks
|
|
2184
|
-
};
|
|
2185
|
-
}
|
|
2186
|
-
return string;
|
|
2187
|
-
}
|
|
2188
|
-
case "number":
|
|
2189
|
-
return {
|
|
2190
|
-
_tag: "Number",
|
|
2191
|
-
checks: [{
|
|
2192
|
-
_tag: "Filter",
|
|
2193
|
-
meta: {
|
|
2194
|
-
_tag: "isFinite"
|
|
2195
|
-
}
|
|
2196
|
-
}, ...collectNumberChecks(js)]
|
|
2197
|
-
};
|
|
2198
|
-
case "integer":
|
|
2199
|
-
return {
|
|
2200
|
-
_tag: "Number",
|
|
2201
|
-
checks: [{
|
|
2202
|
-
_tag: "Filter",
|
|
2203
|
-
meta: {
|
|
2204
|
-
_tag: "isInt"
|
|
2205
|
-
}
|
|
2206
|
-
}, ...collectNumberChecks(js)]
|
|
2207
|
-
};
|
|
2208
|
-
case "boolean":
|
|
2209
|
-
return boolean;
|
|
2210
|
-
case "array":
|
|
2211
|
-
{
|
|
2212
|
-
const minItems = typeof js.minItems === "number" ? js.minItems : 0;
|
|
2213
|
-
const elements = (Array.isArray(js.prefixItems) ? js.prefixItems : []).map((e, i) => ({
|
|
2214
|
-
isOptional: i + 1 > minItems,
|
|
2215
|
-
type: recur(e)
|
|
2216
|
-
}));
|
|
2217
|
-
const rest = js.items !== undefined ? [recur(js.items)] : js.prefixItems !== undefined && typeof js.maxItems === "number" ? [] : [unknown];
|
|
2218
|
-
return {
|
|
2219
|
-
_tag: "Arrays",
|
|
2220
|
-
elements,
|
|
2221
|
-
rest,
|
|
2222
|
-
checks: collectArraysChecks(js)
|
|
2223
|
-
};
|
|
2224
|
-
}
|
|
2225
|
-
case "object":
|
|
2226
|
-
{
|
|
2227
|
-
return {
|
|
2228
|
-
_tag: "Objects",
|
|
2229
|
-
propertySignatures: collectProperties(js),
|
|
2230
|
-
indexSignatures: collectIndexSignatures(js),
|
|
2231
|
-
checks: collectObjectsChecks(js)
|
|
2232
|
-
};
|
|
2233
|
-
}
|
|
2234
|
-
}
|
|
2235
|
-
}
|
|
2236
|
-
return {
|
|
2237
|
-
_tag: "Unknown"
|
|
2238
|
-
};
|
|
2239
|
-
}
|
|
2240
|
-
function collectObjectsChecks(js) {
|
|
2241
|
-
const checks = [];
|
|
2242
|
-
if (typeof js.minProperties === "number") {
|
|
2243
|
-
checks.push({
|
|
2244
|
-
_tag: "Filter",
|
|
2245
|
-
meta: {
|
|
2246
|
-
_tag: "isMinProperties",
|
|
2247
|
-
minProperties: js.minProperties
|
|
2248
|
-
}
|
|
2249
|
-
});
|
|
2250
|
-
}
|
|
2251
|
-
if (typeof js.maxProperties === "number") {
|
|
2252
|
-
checks.push({
|
|
2253
|
-
_tag: "Filter",
|
|
2254
|
-
meta: {
|
|
2255
|
-
_tag: "isMaxProperties",
|
|
2256
|
-
maxProperties: js.maxProperties
|
|
2257
|
-
}
|
|
2258
|
-
});
|
|
2259
|
-
}
|
|
2260
|
-
if (js.propertyNames !== undefined) {
|
|
2261
|
-
const propertyNames = recur(js.propertyNames);
|
|
2262
|
-
checks.push({
|
|
2263
|
-
_tag: "Filter",
|
|
2264
|
-
meta: {
|
|
2265
|
-
_tag: "isPropertyNames",
|
|
2266
|
-
propertyNames
|
|
2267
|
-
}
|
|
2268
|
-
});
|
|
2269
|
-
}
|
|
2270
|
-
return checks;
|
|
2271
|
-
}
|
|
2272
|
-
function combine(a, b) {
|
|
2273
|
-
switch (a._tag) {
|
|
2274
|
-
default:
|
|
2275
|
-
return never;
|
|
2276
|
-
case "Reference":
|
|
2277
|
-
return combine(resolveReference(a.$ref), b);
|
|
2278
|
-
case "Never":
|
|
2279
|
-
return a;
|
|
2280
|
-
case "Unknown":
|
|
2281
|
-
{
|
|
2282
|
-
const resolved = b._tag === "Reference" ? resolveReference(b.$ref) : b;
|
|
2283
|
-
return {
|
|
2284
|
-
...resolved,
|
|
2285
|
-
...combineAnnotations(a.annotations, resolved.annotations)
|
|
2286
|
-
};
|
|
2287
|
-
}
|
|
2288
|
-
case "Null":
|
|
2289
|
-
case "String":
|
|
2290
|
-
case "Number":
|
|
2291
|
-
case "Boolean":
|
|
2292
|
-
case "Literal":
|
|
2293
|
-
case "Arrays":
|
|
2294
|
-
case "Objects":
|
|
2295
|
-
case "Union":
|
|
2296
|
-
break;
|
|
2297
|
-
}
|
|
2298
|
-
if (b._tag === "Reference") {
|
|
2299
|
-
return combine(a, resolveReference(b.$ref));
|
|
2300
|
-
}
|
|
2301
|
-
if (b._tag === "Unknown") {
|
|
2302
|
-
return {
|
|
2303
|
-
...a,
|
|
2304
|
-
...combineAnnotations(a.annotations, b.annotations)
|
|
2305
|
-
};
|
|
2306
|
-
}
|
|
2307
|
-
if (a._tag === "Union") {
|
|
2308
|
-
const types = a.types.map(s => combine(s, b)).filter(s => s !== never);
|
|
2309
|
-
if (types.length === 0) return never;
|
|
2310
|
-
return {
|
|
2311
|
-
_tag: "Union",
|
|
2312
|
-
types,
|
|
2313
|
-
mode: a.mode,
|
|
2314
|
-
...makeAnnotations(a.annotations)
|
|
2315
|
-
};
|
|
2316
|
-
}
|
|
2317
|
-
if (b._tag === "Union") {
|
|
2318
|
-
return combine(b, a);
|
|
2319
|
-
}
|
|
2320
|
-
switch (a._tag) {
|
|
2321
|
-
case "Null":
|
|
2322
|
-
return b._tag === "Null" ? {
|
|
2323
|
-
...a,
|
|
2324
|
-
...combineAnnotations(a.annotations, b.annotations)
|
|
2325
|
-
} : never;
|
|
2326
|
-
case "String":
|
|
2327
|
-
{
|
|
2328
|
-
if (b._tag === "Literal") {
|
|
2329
|
-
return satisfiesLiteral(a, b) ? {
|
|
2330
|
-
...b,
|
|
2331
|
-
...combineAnnotations(a.annotations, b.annotations)
|
|
2332
|
-
} : never;
|
|
2333
|
-
}
|
|
2334
|
-
if (b._tag !== "String") return never;
|
|
2335
|
-
const checks = combineChecks(a.checks, b.checks, b.annotations);
|
|
2336
|
-
return {
|
|
2337
|
-
_tag: "String",
|
|
2338
|
-
checks: checks ?? a.checks,
|
|
2339
|
-
...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
|
|
2340
|
-
};
|
|
2341
|
-
}
|
|
2342
|
-
case "Number":
|
|
2343
|
-
{
|
|
2344
|
-
if (b._tag === "Literal") {
|
|
2345
|
-
return satisfiesLiteral(a, b) ? {
|
|
2346
|
-
...b,
|
|
2347
|
-
...combineAnnotations(a.annotations, b.annotations)
|
|
2348
|
-
} : never;
|
|
2349
|
-
}
|
|
2350
|
-
if (b._tag !== "Number") return never;
|
|
2351
|
-
const checks = combineNumberChecks(a.checks, b.checks, b.annotations);
|
|
2352
|
-
return {
|
|
2353
|
-
_tag: "Number",
|
|
2354
|
-
checks: checks ?? a.checks,
|
|
2355
|
-
...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
|
|
2356
|
-
};
|
|
2357
|
-
}
|
|
2358
|
-
case "Boolean":
|
|
2359
|
-
if (b._tag === "Boolean") {
|
|
2360
|
-
return {
|
|
2361
|
-
_tag: "Boolean",
|
|
2362
|
-
...combineAnnotations(a.annotations, b.annotations)
|
|
2363
|
-
};
|
|
2364
|
-
}
|
|
2365
|
-
return b._tag === "Literal" && typeof b.literal === "boolean" ? {
|
|
2366
|
-
...b,
|
|
2367
|
-
...combineAnnotations(a.annotations, b.annotations)
|
|
2368
|
-
} : never;
|
|
2369
|
-
case "Literal":
|
|
2370
|
-
switch (b._tag) {
|
|
2371
|
-
case "Literal":
|
|
2372
|
-
return a.literal === b.literal ? {
|
|
2373
|
-
...a,
|
|
2374
|
-
...combineAnnotations(a.annotations, b.annotations)
|
|
2375
|
-
} : never;
|
|
2376
|
-
case "String":
|
|
2377
|
-
case "Number":
|
|
2378
|
-
return satisfiesLiteral(b, a) ? {
|
|
2379
|
-
...a,
|
|
2380
|
-
...combineAnnotations(a.annotations, b.annotations)
|
|
2381
|
-
} : never;
|
|
2382
|
-
case "Boolean":
|
|
2383
|
-
return typeof a.literal === "boolean" ? {
|
|
2384
|
-
...a,
|
|
2385
|
-
...combineAnnotations(a.annotations, b.annotations)
|
|
2386
|
-
} : never;
|
|
2387
|
-
default:
|
|
2388
|
-
return never;
|
|
2389
|
-
}
|
|
2390
|
-
case "Arrays":
|
|
2391
|
-
{
|
|
2392
|
-
if (b._tag !== "Arrays") return never;
|
|
2393
|
-
const arrays = combineArrays(a, b);
|
|
2394
|
-
if (arrays === undefined) return never;
|
|
2395
|
-
const checks = combineArraysChecks(a.checks, b.checks, b.annotations);
|
|
2396
|
-
return {
|
|
2397
|
-
_tag: "Arrays",
|
|
2398
|
-
elements: arrays.elements,
|
|
2399
|
-
rest: arrays.rest,
|
|
2400
|
-
checks: checks ?? a.checks,
|
|
2401
|
-
...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
|
|
2402
|
-
};
|
|
2403
|
-
}
|
|
2404
|
-
case "Objects":
|
|
2405
|
-
{
|
|
2406
|
-
if (b._tag !== "Objects") return never;
|
|
2407
|
-
const checks = combineChecks(a.checks, b.checks, b.annotations);
|
|
2408
|
-
return {
|
|
2409
|
-
_tag: "Objects",
|
|
2410
|
-
propertySignatures: combinePropertySignatures(a.propertySignatures, b.propertySignatures),
|
|
2411
|
-
indexSignatures: combineIndexSignatures(a.indexSignatures, b.indexSignatures),
|
|
2412
|
-
checks: checks ?? a.checks,
|
|
2413
|
-
...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
|
|
2414
|
-
};
|
|
2415
|
-
}
|
|
2416
|
-
default:
|
|
2417
|
-
return never;
|
|
2418
|
-
}
|
|
2419
|
-
}
|
|
2420
|
-
function satisfiesPrimitiveCheck(check, value) {
|
|
2421
|
-
if (check._tag === "FilterGroup") {
|
|
2422
|
-
return check.checks.every(check => satisfiesPrimitiveCheck(check, value));
|
|
2423
|
-
}
|
|
2424
|
-
const meta = check.meta;
|
|
2425
|
-
switch (meta._tag) {
|
|
2426
|
-
case "isMinLength":
|
|
2427
|
-
return typeof value === "string" && value.length >= meta.minLength;
|
|
2428
|
-
case "isMaxLength":
|
|
2429
|
-
return typeof value === "string" && value.length <= meta.maxLength;
|
|
2430
|
-
case "isPattern":
|
|
2431
|
-
return typeof value === "string" && meta.regExp.test(value);
|
|
2432
|
-
case "isFinite":
|
|
2433
|
-
return typeof value === "number" && globalThis.Number.isFinite(value);
|
|
2434
|
-
case "isInt":
|
|
2435
|
-
return typeof value === "number" && globalThis.Number.isSafeInteger(value);
|
|
2436
|
-
case "isMultipleOf":
|
|
2437
|
-
return typeof value === "number" && remainder(value, meta.divisor) === 0;
|
|
2438
|
-
case "isGreaterThan":
|
|
2439
|
-
return typeof value === "number" && value > meta.exclusiveMinimum;
|
|
2440
|
-
case "isGreaterThanOrEqualTo":
|
|
2441
|
-
return typeof value === "number" && value >= meta.minimum;
|
|
2442
|
-
case "isLessThan":
|
|
2443
|
-
return typeof value === "number" && value < meta.exclusiveMaximum;
|
|
2444
|
-
case "isLessThanOrEqualTo":
|
|
2445
|
-
return typeof value === "number" && value <= meta.maximum;
|
|
2446
|
-
default:
|
|
2447
|
-
return false;
|
|
2448
|
-
}
|
|
2449
|
-
}
|
|
2450
|
-
function satisfiesLiteral(type, literal) {
|
|
2451
|
-
const value = literal.literal;
|
|
2452
|
-
if (type._tag === "String" ? typeof value !== "string" : typeof value !== "number") {
|
|
2453
|
-
return false;
|
|
2454
|
-
}
|
|
2455
|
-
return type.checks.every(check => satisfiesPrimitiveCheck(check, value));
|
|
2456
|
-
}
|
|
2457
|
-
function collectProperties(js) {
|
|
2458
|
-
const properties = Predicate.isObject(js.properties) ? js.properties : {};
|
|
2459
|
-
const required = Array.isArray(js.required) ? js.required : [];
|
|
2460
|
-
required.forEach(key => {
|
|
2461
|
-
if (!Object.hasOwn(properties, key)) {
|
|
2462
|
-
properties[key] = {};
|
|
2463
|
-
}
|
|
2464
|
-
});
|
|
2465
|
-
return Object.entries(properties).map(([key, v]) => ({
|
|
2466
|
-
name: key,
|
|
2467
|
-
type: recur(v),
|
|
2468
|
-
isOptional: !required.includes(key),
|
|
2469
|
-
isMutable: false
|
|
2470
|
-
}));
|
|
2471
|
-
}
|
|
2472
|
-
function collectIndexSignatures(js) {
|
|
2473
|
-
const out = [];
|
|
2474
|
-
if (Predicate.isObject(js.patternProperties)) {
|
|
2475
|
-
for (const [pattern, value] of Object.entries(js.patternProperties)) {
|
|
2476
|
-
out.push({
|
|
2477
|
-
parameter: recur({
|
|
2478
|
-
pattern
|
|
2479
|
-
}),
|
|
2480
|
-
type: recur(value)
|
|
2481
|
-
});
|
|
2482
|
-
}
|
|
2483
|
-
}
|
|
2484
|
-
if (js.additionalProperties === undefined || js.additionalProperties === true) {
|
|
2485
|
-
out.push({
|
|
2486
|
-
parameter: string,
|
|
2487
|
-
type: unknown
|
|
2488
|
-
});
|
|
2489
|
-
} else if (Predicate.isObject(js.additionalProperties)) {
|
|
2490
|
-
out.push({
|
|
2491
|
-
parameter: string,
|
|
2492
|
-
type: recur(js.additionalProperties)
|
|
2493
|
-
});
|
|
2494
|
-
}
|
|
2495
|
-
return out;
|
|
2496
|
-
}
|
|
2497
|
-
function combineArrays(a, b) {
|
|
2498
|
-
const elements = [];
|
|
2499
|
-
const len = Math.max(a.elements.length, b.elements.length);
|
|
2500
|
-
for (let i = 0; i < len; i++) {
|
|
2501
|
-
const ae = a.elements[i];
|
|
2502
|
-
const be = b.elements[i];
|
|
2503
|
-
const isOptional = ae?.isOptional !== false && be?.isOptional !== false;
|
|
2504
|
-
const at = ae?.type ?? a.rest[0];
|
|
2505
|
-
const bt = be?.type ?? b.rest[0];
|
|
2506
|
-
if (at === undefined || bt === undefined) {
|
|
2507
|
-
return isOptional ? {
|
|
2508
|
-
elements,
|
|
2509
|
-
rest: []
|
|
2510
|
-
} : undefined;
|
|
2511
|
-
}
|
|
2512
|
-
const type = combine(at, bt);
|
|
2513
|
-
if (type === never) {
|
|
2514
|
-
return isOptional ? {
|
|
2515
|
-
elements,
|
|
2516
|
-
rest: []
|
|
2517
|
-
} : undefined;
|
|
2518
|
-
}
|
|
2519
|
-
elements.push({
|
|
2520
|
-
isOptional,
|
|
2521
|
-
type
|
|
2522
|
-
});
|
|
2523
|
-
}
|
|
2524
|
-
const ar = a.rest[0];
|
|
2525
|
-
const br = b.rest[0];
|
|
2526
|
-
if (ar === undefined || br === undefined) {
|
|
2527
|
-
return {
|
|
2528
|
-
elements,
|
|
2529
|
-
rest: []
|
|
2530
|
-
};
|
|
2531
|
-
}
|
|
2532
|
-
const rest = combine(ar, br);
|
|
2533
|
-
return {
|
|
2534
|
-
elements,
|
|
2535
|
-
rest: rest === never ? [] : [rest]
|
|
2536
|
-
};
|
|
2537
|
-
}
|
|
2538
|
-
function combinePropertySignatures(a, b) {
|
|
2539
|
-
const propertySignatures = [];
|
|
2540
|
-
const thatPropertiesMap = {};
|
|
2541
|
-
for (const p of b) {
|
|
2542
|
-
thatPropertiesMap[p.name] = p;
|
|
2543
|
-
}
|
|
2544
|
-
const keys = new Set();
|
|
2545
|
-
for (const p of a) {
|
|
2546
|
-
keys.add(p.name);
|
|
2547
|
-
const thatp = thatPropertiesMap[p.name];
|
|
2548
|
-
if (thatp) {
|
|
2549
|
-
propertySignatures.push({
|
|
2550
|
-
name: p.name,
|
|
2551
|
-
type: combine(p.type, thatp.type),
|
|
2552
|
-
isOptional: p.isOptional && thatp.isOptional,
|
|
2553
|
-
isMutable: p.isMutable
|
|
2554
|
-
});
|
|
2555
|
-
} else {
|
|
2556
|
-
propertySignatures.push(p);
|
|
2557
|
-
}
|
|
2558
|
-
}
|
|
2559
|
-
for (const p of b) {
|
|
2560
|
-
if (!keys.has(p.name)) propertySignatures.push(p);
|
|
2561
|
-
}
|
|
2562
|
-
return propertySignatures;
|
|
2563
|
-
}
|
|
2564
|
-
function combineIndexSignatures(a, b) {
|
|
2565
|
-
if (a.length === 0 || b.length === 0) return [];
|
|
2566
|
-
const out = [...a];
|
|
2567
|
-
for (const is of b) {
|
|
2568
|
-
if (is.parameter === string) {
|
|
2569
|
-
const i = a.findIndex(is => is.parameter === string);
|
|
2570
|
-
if (i !== -1) {
|
|
2571
|
-
out[i] = {
|
|
2572
|
-
parameter: string,
|
|
2573
|
-
type: combine(a[i].type, is.type)
|
|
2574
|
-
};
|
|
2575
|
-
} else {
|
|
2576
|
-
out.push(is);
|
|
2577
|
-
}
|
|
2578
|
-
} else {
|
|
2579
|
-
out.push(is);
|
|
2580
|
-
}
|
|
2581
|
-
}
|
|
2582
|
-
return out;
|
|
2583
|
-
}
|
|
2584
|
-
function unknownToJson(representation) {
|
|
2585
|
-
switch (representation._tag) {
|
|
2586
|
-
case "Unknown":
|
|
2587
|
-
return representation.annotations === undefined ? json : {
|
|
2588
|
-
...json,
|
|
2589
|
-
annotations: {
|
|
2590
|
-
...json.annotations,
|
|
2591
|
-
...representation.annotations
|
|
2592
|
-
}
|
|
2593
|
-
};
|
|
2594
|
-
case "Suspend":
|
|
2595
|
-
{
|
|
2596
|
-
const thunk = unknownToJson(representation.thunk);
|
|
2597
|
-
return thunk === representation.thunk ? representation : {
|
|
2598
|
-
...representation,
|
|
2599
|
-
thunk
|
|
2600
|
-
};
|
|
2601
|
-
}
|
|
2602
|
-
case "String":
|
|
2603
|
-
{
|
|
2604
|
-
if (representation.contentSchema === undefined) return representation;
|
|
2605
|
-
const contentSchema = unknownToJson(representation.contentSchema);
|
|
2606
|
-
return contentSchema === representation.contentSchema ? representation : {
|
|
2607
|
-
...representation,
|
|
2608
|
-
contentSchema
|
|
2609
|
-
};
|
|
2610
|
-
}
|
|
2611
|
-
case "Arrays":
|
|
2612
|
-
{
|
|
2613
|
-
const elements = SchemaAST.mapOrSame(representation.elements, element => {
|
|
2614
|
-
const type = unknownToJson(element.type);
|
|
2615
|
-
return type === element.type ? element : {
|
|
2616
|
-
...element,
|
|
2617
|
-
type
|
|
2618
|
-
};
|
|
2619
|
-
});
|
|
2620
|
-
const rest = SchemaAST.mapOrSame(representation.rest, unknownToJson);
|
|
2621
|
-
return elements === representation.elements && rest === representation.rest ? representation : {
|
|
2622
|
-
...representation,
|
|
2623
|
-
elements,
|
|
2624
|
-
rest
|
|
2625
|
-
};
|
|
2626
|
-
}
|
|
2627
|
-
case "Objects":
|
|
2628
|
-
{
|
|
2629
|
-
const propertySignatures = SchemaAST.mapOrSame(representation.propertySignatures, propertySignature => {
|
|
2630
|
-
const type = unknownToJson(propertySignature.type);
|
|
2631
|
-
return type === propertySignature.type ? propertySignature : {
|
|
2632
|
-
...propertySignature,
|
|
2633
|
-
type
|
|
2634
|
-
};
|
|
2635
|
-
});
|
|
2636
|
-
const indexSignatures = SchemaAST.mapOrSame(representation.indexSignatures, indexSignature => {
|
|
2637
|
-
const type = unknownToJson(indexSignature.type);
|
|
2638
|
-
return type === indexSignature.type ? indexSignature : {
|
|
2639
|
-
...indexSignature,
|
|
2640
|
-
type
|
|
2641
|
-
};
|
|
2642
|
-
});
|
|
2643
|
-
return propertySignatures === representation.propertySignatures && indexSignatures === representation.indexSignatures ? representation : {
|
|
2644
|
-
...representation,
|
|
2645
|
-
propertySignatures,
|
|
2646
|
-
indexSignatures
|
|
2647
|
-
};
|
|
2648
|
-
}
|
|
2649
|
-
case "Union":
|
|
2650
|
-
{
|
|
2651
|
-
const types = SchemaAST.mapOrSame(representation.types, unknownToJson);
|
|
2652
|
-
return types === representation.types ? representation : {
|
|
2653
|
-
...representation,
|
|
2654
|
-
types
|
|
2655
|
-
};
|
|
2656
|
-
}
|
|
2657
|
-
default:
|
|
2658
|
-
return representation;
|
|
2659
|
-
}
|
|
2660
|
-
}
|
|
2661
|
-
}
|
|
2662
|
-
function asChecks(checks, annotations) {
|
|
2663
|
-
if (Arr.isReadonlyArrayNonEmpty(checks)) {
|
|
2664
|
-
if (annotations !== undefined) {
|
|
2665
|
-
if (checks.length === 1) {
|
|
2666
|
-
const check = checks[0];
|
|
2667
|
-
if (check.annotations === undefined) {
|
|
2668
|
-
return [{
|
|
2669
|
-
...check,
|
|
2670
|
-
annotations
|
|
2671
|
-
}];
|
|
2672
|
-
} else {
|
|
2673
|
-
return [{
|
|
2674
|
-
_tag: "FilterGroup",
|
|
2675
|
-
checks,
|
|
2676
|
-
annotations
|
|
2677
|
-
}];
|
|
2678
|
-
}
|
|
2679
|
-
} else {
|
|
2680
|
-
return [{
|
|
2681
|
-
_tag: "FilterGroup",
|
|
2682
|
-
checks,
|
|
2683
|
-
annotations
|
|
2684
|
-
}];
|
|
2685
|
-
}
|
|
2686
|
-
}
|
|
2687
|
-
return checks;
|
|
2688
|
-
}
|
|
2689
|
-
}
|
|
2690
|
-
function combineChecks(a, b, annotations) {
|
|
2691
|
-
const checks = asChecks(b, annotations);
|
|
2692
|
-
if (checks) {
|
|
2693
|
-
return [...a, ...checks];
|
|
2694
|
-
}
|
|
2695
|
-
}
|
|
2696
|
-
function combineNumberChecks(a, b, annotations) {
|
|
2697
|
-
if (a.some(c => c._tag === "Filter" && c.meta._tag === "isFinite")) {
|
|
2698
|
-
b = b.filter(c => c._tag !== "Filter" || c.meta._tag !== "isFinite");
|
|
2699
|
-
}
|
|
2700
|
-
if (a.some(c => c._tag === "Filter" && c.meta._tag === "isInt")) {
|
|
2701
|
-
b = b.filter(c => c._tag !== "Filter" || c.meta._tag !== "isInt");
|
|
2702
|
-
}
|
|
2703
|
-
return combineChecks(a, b, annotations);
|
|
2704
|
-
}
|
|
2705
|
-
function combineArraysChecks(a, b, annotations) {
|
|
2706
|
-
if (a.some(c => c._tag === "Filter" && c.meta._tag === "isUnique")) {
|
|
2707
|
-
b = b.filter(c => c._tag !== "Filter" || c.meta._tag !== "isUnique");
|
|
2708
|
-
}
|
|
2709
|
-
return combineChecks(a, b, annotations);
|
|
2710
|
-
}
|
|
2711
|
-
function makeAnnotations(annotations) {
|
|
2712
|
-
return annotations ? {
|
|
2713
|
-
annotations
|
|
2714
|
-
} : undefined;
|
|
2715
|
-
}
|
|
2716
|
-
function combineAnnotations(a, b) {
|
|
2717
|
-
if (a === undefined) return makeAnnotations(b);
|
|
2718
|
-
if (b === undefined) return makeAnnotations(a);
|
|
2719
|
-
return {
|
|
2720
|
-
annotations: {
|
|
2721
|
-
...a,
|
|
2722
|
-
...b
|
|
2723
|
-
}
|
|
2724
|
-
}; // TODO: better merge
|
|
2725
|
-
}
|
|
2726
|
-
function collectStringChecks(js) {
|
|
2727
|
-
const checks = [];
|
|
2728
|
-
if (typeof js.minLength === "number") {
|
|
2729
|
-
checks.push({
|
|
2730
|
-
_tag: "Filter",
|
|
2731
|
-
meta: {
|
|
2732
|
-
_tag: "isMinLength",
|
|
2733
|
-
minLength: js.minLength
|
|
2734
|
-
}
|
|
2735
|
-
});
|
|
2736
|
-
}
|
|
2737
|
-
if (typeof js.maxLength === "number") {
|
|
2738
|
-
checks.push({
|
|
2739
|
-
_tag: "Filter",
|
|
2740
|
-
meta: {
|
|
2741
|
-
_tag: "isMaxLength",
|
|
2742
|
-
maxLength: js.maxLength
|
|
2743
|
-
}
|
|
2744
|
-
});
|
|
2745
|
-
}
|
|
2746
|
-
if (typeof js.pattern === "string") {
|
|
2747
|
-
checks.push({
|
|
2748
|
-
_tag: "Filter",
|
|
2749
|
-
meta: {
|
|
2750
|
-
_tag: "isPattern",
|
|
2751
|
-
regExp: new RegExp(js.pattern)
|
|
2752
|
-
}
|
|
2753
|
-
});
|
|
2754
|
-
}
|
|
2755
|
-
return checks;
|
|
2756
|
-
}
|
|
2757
|
-
function collectNumberChecks(js) {
|
|
2758
|
-
const checks = [];
|
|
2759
|
-
if (typeof js.minimum === "number") {
|
|
2760
|
-
checks.push({
|
|
2761
|
-
_tag: "Filter",
|
|
2762
|
-
meta: {
|
|
2763
|
-
_tag: "isGreaterThanOrEqualTo",
|
|
2764
|
-
minimum: js.minimum
|
|
2765
|
-
}
|
|
2766
|
-
});
|
|
2767
|
-
}
|
|
2768
|
-
if (typeof js.maximum === "number") {
|
|
2769
|
-
checks.push({
|
|
2770
|
-
_tag: "Filter",
|
|
2771
|
-
meta: {
|
|
2772
|
-
_tag: "isLessThanOrEqualTo",
|
|
2773
|
-
maximum: js.maximum
|
|
2774
|
-
}
|
|
2775
|
-
});
|
|
2776
|
-
}
|
|
2777
|
-
if (typeof js.exclusiveMinimum === "number") {
|
|
2778
|
-
checks.push({
|
|
2779
|
-
_tag: "Filter",
|
|
2780
|
-
meta: {
|
|
2781
|
-
_tag: "isGreaterThan",
|
|
2782
|
-
exclusiveMinimum: js.exclusiveMinimum
|
|
2783
|
-
}
|
|
2784
|
-
});
|
|
2785
|
-
}
|
|
2786
|
-
if (typeof js.exclusiveMaximum === "number") {
|
|
2787
|
-
checks.push({
|
|
2788
|
-
_tag: "Filter",
|
|
2789
|
-
meta: {
|
|
2790
|
-
_tag: "isLessThan",
|
|
2791
|
-
exclusiveMaximum: js.exclusiveMaximum
|
|
2792
|
-
}
|
|
2793
|
-
});
|
|
2794
|
-
}
|
|
2795
|
-
if (typeof js.multipleOf === "number") {
|
|
2796
|
-
checks.push({
|
|
2797
|
-
_tag: "Filter",
|
|
2798
|
-
meta: {
|
|
2799
|
-
_tag: "isMultipleOf",
|
|
2800
|
-
divisor: js.multipleOf
|
|
2801
|
-
}
|
|
2802
|
-
});
|
|
2803
|
-
}
|
|
2804
|
-
return checks;
|
|
2805
|
-
}
|
|
2806
|
-
function collectArraysChecks(js) {
|
|
2807
|
-
const checks = [];
|
|
2808
|
-
if (js.prefixItems === undefined) {
|
|
2809
|
-
if (typeof js.minItems === "number") {
|
|
2810
|
-
checks.push({
|
|
2811
|
-
_tag: "Filter",
|
|
2812
|
-
meta: {
|
|
2813
|
-
_tag: "isMinLength",
|
|
2814
|
-
minLength: js.minItems
|
|
2815
|
-
}
|
|
2816
|
-
});
|
|
2817
|
-
}
|
|
2818
|
-
if (typeof js.maxItems === "number") {
|
|
2819
|
-
checks.push({
|
|
2820
|
-
_tag: "Filter",
|
|
2821
|
-
meta: {
|
|
2822
|
-
_tag: "isMaxLength",
|
|
2823
|
-
maxLength: js.maxItems
|
|
2824
|
-
}
|
|
2825
|
-
});
|
|
2826
|
-
}
|
|
2827
|
-
}
|
|
2828
|
-
if (typeof js.uniqueItems === "boolean") {
|
|
2829
|
-
checks.push({
|
|
2830
|
-
_tag: "Filter",
|
|
2831
|
-
meta: {
|
|
2832
|
-
_tag: "isUnique"
|
|
2833
|
-
}
|
|
2834
|
-
});
|
|
2835
|
-
}
|
|
2836
|
-
return checks;
|
|
2837
|
-
}
|
|
2838
|
-
const unknown = {
|
|
2839
|
-
_tag: "Unknown"
|
|
2840
|
-
};
|
|
2841
|
-
const json = {
|
|
2842
|
-
_tag: "Declaration",
|
|
2843
|
-
annotations: {
|
|
2844
|
-
expected: "JSON value",
|
|
2845
|
-
generation: {
|
|
2846
|
-
Type: "Schema.Json",
|
|
2847
|
-
runtime: "Schema.Json"
|
|
2848
|
-
},
|
|
2849
|
-
typeConstructor: {
|
|
2850
|
-
_tag: "effect/Json"
|
|
2851
|
-
}
|
|
2852
|
-
},
|
|
2853
|
-
checks: [],
|
|
2854
|
-
encodedSchema: unknown,
|
|
2855
|
-
typeParameters: []
|
|
2856
|
-
};
|
|
2857
|
-
const never = {
|
|
2858
|
-
_tag: "Never"
|
|
2859
|
-
};
|
|
2860
|
-
const null_ = {
|
|
2861
|
-
_tag: "Null"
|
|
2862
|
-
};
|
|
2863
|
-
const string = {
|
|
2864
|
-
_tag: "String",
|
|
2865
|
-
checks: []
|
|
2866
|
-
};
|
|
2867
|
-
const boolean = {
|
|
2868
|
-
_tag: "Boolean"
|
|
2869
|
-
};
|
|
2870
|
-
function collectAnnotations(schema) {
|
|
2871
|
-
const as = {};
|
|
2872
|
-
if (typeof schema.title === "string") as.title = schema.title;
|
|
2873
|
-
if (typeof schema.description === "string") as.description = schema.description;
|
|
2874
|
-
if (schema.default !== undefined) as.default = schema.default;
|
|
2875
|
-
if (Array.isArray(schema.examples)) as.examples = schema.examples;
|
|
2876
|
-
if (typeof schema.readOnly === "boolean") as.readOnly = schema.readOnly;
|
|
2877
|
-
if (typeof schema.writeOnly === "boolean") as.writeOnly = schema.writeOnly;
|
|
2878
|
-
if (typeof schema.format === "string") as.format = schema.format;
|
|
2879
|
-
if (typeof schema.contentEncoding === "string") as.contentEncoding = schema.contentEncoding;
|
|
2880
|
-
if (typeof schema.contentMediaType === "string") as.contentMediaType = schema.contentMediaType;
|
|
2881
|
-
return Rec.isEmptyRecord(as) ? undefined : as;
|
|
2882
|
-
}
|
|
2883
|
-
function isLiteralValue(value) {
|
|
2884
|
-
return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
|
|
2885
|
-
}
|
|
2886
|
-
const stringKeys = ["minLength", "maxLength", "pattern", "format", "contentMediaType", "contentSchema"];
|
|
2887
|
-
const numberKeys = ["minimum", "maximum", "exclusiveMinimum", "exclusiveMaximum", "multipleOf"];
|
|
2888
|
-
const objectKeys = ["properties", "required", "additionalProperties", "patternProperties", "propertyNames", "minProperties", "maxProperties"];
|
|
2889
|
-
const arrayKeys = ["items", "prefixItems", "additionalItems", "minItems", "maxItems", "uniqueItems"];
|
|
2890
|
-
function getType(js) {
|
|
2891
|
-
if (stringKeys.some(key => js[key] !== undefined)) {
|
|
2892
|
-
return "string";
|
|
2893
|
-
}
|
|
2894
|
-
if (numberKeys.some(key => js[key] !== undefined)) {
|
|
2895
|
-
return "number";
|
|
2896
|
-
}
|
|
2897
|
-
if (objectKeys.some(key => js[key] !== undefined)) {
|
|
2898
|
-
return "object";
|
|
2899
|
-
}
|
|
2900
|
-
if (arrayKeys.some(key => js[key] !== undefined)) {
|
|
2901
|
-
return "array";
|
|
2902
|
-
}
|
|
2903
|
-
}
|
|
2904
|
-
const types = ["null", "string", "number", "integer", "boolean", "object", "array"];
|
|
2905
|
-
function isType(type) {
|
|
2906
|
-
return typeof type === "string" && types.includes(type);
|
|
2907
|
-
}
|
|
2908
|
-
/** @internal */
|
|
2909
|
-
export function topologicalSort(references) {
|
|
2910
|
-
const identifiers = Object.keys(references);
|
|
2911
|
-
const identifierSet = new Set(identifiers);
|
|
2912
|
-
const collectRefs = root => {
|
|
2913
|
-
const refs = new Set();
|
|
2914
|
-
const visited = new WeakSet();
|
|
2915
|
-
const stack = [root];
|
|
2916
|
-
while (stack.length > 0) {
|
|
2917
|
-
const r = stack.pop();
|
|
2918
|
-
if (visited.has(r)) continue;
|
|
2919
|
-
visited.add(r);
|
|
2920
|
-
if (r._tag === "Reference") {
|
|
2921
|
-
if (identifierSet.has(r.$ref)) {
|
|
2922
|
-
refs.add(r.$ref);
|
|
2923
|
-
}
|
|
2924
|
-
}
|
|
2925
|
-
// Push nested Representation schemas onto the stack
|
|
2926
|
-
switch (r._tag) {
|
|
2927
|
-
case "Declaration":
|
|
2928
|
-
for (const typeParam of r.typeParameters) stack.push(typeParam);
|
|
2929
|
-
stack.push(r.encodedSchema);
|
|
2930
|
-
break;
|
|
2931
|
-
case "Suspend":
|
|
2932
|
-
stack.push(r.thunk);
|
|
2933
|
-
break;
|
|
2934
|
-
case "String":
|
|
2935
|
-
if (r.contentSchema !== undefined) stack.push(r.contentSchema);
|
|
2936
|
-
break;
|
|
2937
|
-
case "TemplateLiteral":
|
|
2938
|
-
for (const part of r.parts) stack.push(part);
|
|
2939
|
-
break;
|
|
2940
|
-
case "Arrays":
|
|
2941
|
-
for (const element of r.elements) stack.push(element.type);
|
|
2942
|
-
for (const rest of r.rest) stack.push(rest);
|
|
2943
|
-
break;
|
|
2944
|
-
case "Objects":
|
|
2945
|
-
for (const propertySignature of r.propertySignatures) stack.push(propertySignature.type);
|
|
2946
|
-
for (const indexSignature of r.indexSignatures) {
|
|
2947
|
-
stack.push(indexSignature.parameter);
|
|
2948
|
-
stack.push(indexSignature.type);
|
|
2949
|
-
}
|
|
2950
|
-
break;
|
|
2951
|
-
case "Union":
|
|
2952
|
-
for (const type of r.types) stack.push(type);
|
|
2953
|
-
break;
|
|
2954
|
-
}
|
|
2955
|
-
}
|
|
2956
|
-
return refs;
|
|
2957
|
-
};
|
|
2958
|
-
// identifier -> internal identifiers it depends on
|
|
2959
|
-
const dependencies = new Map(identifiers.map(id => [id, collectRefs(references[id])]));
|
|
2960
|
-
// Mark only nodes that are part of cycles
|
|
2961
|
-
const recursive = new Set();
|
|
2962
|
-
const state = new Map(); // 0 = new, 1 = visiting, 2 = done
|
|
2963
|
-
const stack = [];
|
|
2964
|
-
const indexInStack = new Map();
|
|
2965
|
-
const dfs = id => {
|
|
2966
|
-
const s = state.get(id) ?? 0;
|
|
2967
|
-
if (s === 1) {
|
|
2968
|
-
const start = indexInStack.get(id);
|
|
2969
|
-
if (start !== undefined) {
|
|
2970
|
-
for (let i = start; i < stack.length; i++) {
|
|
2971
|
-
recursive.add(stack[i]);
|
|
2972
|
-
}
|
|
2973
|
-
}
|
|
2974
|
-
return;
|
|
2975
|
-
}
|
|
2976
|
-
if (s === 2) return;
|
|
2977
|
-
state.set(id, 1);
|
|
2978
|
-
indexInStack.set(id, stack.length);
|
|
2979
|
-
stack.push(id);
|
|
2980
|
-
for (const dep of dependencies.get(id) ?? []) {
|
|
2981
|
-
dfs(dep);
|
|
2982
|
-
}
|
|
2983
|
-
stack.pop();
|
|
2984
|
-
indexInStack.delete(id);
|
|
2985
|
-
state.set(id, 2);
|
|
2986
|
-
};
|
|
2987
|
-
for (const id of identifiers) dfs(id);
|
|
2988
|
-
// Topologically sort the non-recursive nodes (ignoring edges to recursive nodes)
|
|
2989
|
-
const inDegree = new Map();
|
|
2990
|
-
const dependents = new Map(); // dep -> nodes that depend on it
|
|
2991
|
-
for (const id of identifiers) {
|
|
2992
|
-
if (!recursive.has(id)) {
|
|
2993
|
-
inDegree.set(id, 0);
|
|
2994
|
-
dependents.set(id, new Set());
|
|
2995
|
-
}
|
|
2996
|
-
}
|
|
2997
|
-
for (const [id, deps] of dependencies) {
|
|
2998
|
-
if (recursive.has(id)) continue;
|
|
2999
|
-
for (const dep of deps) {
|
|
3000
|
-
if (recursive.has(dep)) continue;
|
|
3001
|
-
inDegree.set(id, (inDegree.get(id) ?? 0) + 1);
|
|
3002
|
-
dependents.get(dep)?.add(id);
|
|
3003
|
-
}
|
|
3004
|
-
}
|
|
3005
|
-
const queue = [];
|
|
3006
|
-
for (const [id, deg] of inDegree) {
|
|
3007
|
-
if (deg === 0) queue.push(id);
|
|
3008
|
-
}
|
|
3009
|
-
const nonRecursives = [];
|
|
3010
|
-
for (let i = 0; i < queue.length; i++) {
|
|
3011
|
-
const $ref = queue[i];
|
|
3012
|
-
nonRecursives.push({
|
|
3013
|
-
$ref,
|
|
3014
|
-
representation: references[$ref]
|
|
3015
|
-
});
|
|
3016
|
-
for (const next of dependents.get($ref) ?? []) {
|
|
3017
|
-
const deg = (inDegree.get(next) ?? 0) - 1;
|
|
3018
|
-
inDegree.set(next, deg);
|
|
3019
|
-
if (deg === 0) queue.push(next);
|
|
3020
|
-
}
|
|
3021
|
-
}
|
|
3022
|
-
const recursives = {};
|
|
3023
|
-
for (const $ref of recursive) {
|
|
3024
|
-
recursives[$ref] = references[$ref];
|
|
3025
|
-
}
|
|
3026
|
-
return {
|
|
3027
|
-
nonRecursives,
|
|
3028
|
-
recursives
|
|
3029
|
-
};
|
|
476
|
+
return InternalFromJsonSchemaDocument.fromJsonSchemaMultiDocument(document, options);
|
|
3030
477
|
}
|
|
3031
478
|
//# sourceMappingURL=SchemaRepresentation.js.map
|