effect 4.0.6 → 4.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Arbitrary.d.ts +10 -2
- package/dist/Arbitrary.d.ts.map +1 -1
- package/dist/Arbitrary.js +2 -1
- package/dist/Arbitrary.js.map +1 -1
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +21 -6
- package/dist/Channel.js.map +1 -1
- package/dist/Data.d.ts +54 -235
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js.map +1 -1
- package/dist/Effect.d.ts +1 -1
- package/dist/Effect.js +1 -1
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +8 -1
- package/dist/Equal.js.map +1 -1
- package/dist/Exit.d.ts +3 -3
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js.map +1 -1
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +27 -13
- package/dist/Formatter.js.map +1 -1
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +4 -1
- package/dist/Hash.js.map +1 -1
- package/dist/JsonPatch.js +4 -0
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +13 -40
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Metric.d.ts +3 -3
- package/dist/MutableList.d.ts +5 -2
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +7 -5
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +7 -0
- package/dist/MutableRef.js.map +1 -1
- package/dist/PartitionedSemaphore.d.ts +2 -1
- package/dist/PartitionedSemaphore.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +22 -12
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +77 -27
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +5 -6
- package/dist/PubSub.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +8 -0
- package/dist/Ref.js.map +1 -1
- package/dist/Schedule.js +1 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +24 -8
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +37 -28
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +4 -2
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +14 -17
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +48 -22
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +19 -10
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +23 -13
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +4 -1
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +9 -2
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +54 -35
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +7 -2
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +22 -10
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +3 -0
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +3 -0
- package/dist/String.js.map +1 -1
- package/dist/Tracer.d.ts +11 -1
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +6 -1
- package/dist/Tracer.js.map +1 -1
- package/dist/ai/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +9 -0
- package/dist/ai/LanguageModel.js.map +1 -1
- package/dist/ai/McpSchema.d.ts +110 -110
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +21 -15
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts +52 -0
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +38 -0
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +16 -3
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +4 -0
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +24 -0
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js +5 -2
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +8 -1
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/cli/Argument.d.ts +15 -0
- package/dist/cli/Argument.d.ts.map +1 -1
- package/dist/cli/Argument.js +5 -0
- package/dist/cli/Argument.js.map +1 -1
- package/dist/cli/CliError.d.ts +78 -0
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +65 -3
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +155 -6
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +62 -6
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts +24 -16
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +59 -29
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +58 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js +49 -9
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +15 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +5 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +15 -7
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Param.d.ts +9 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +21 -2
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +3 -2
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
- package/dist/cli/TerminalCapabilities.js +3 -1
- package/dist/cli/TerminalCapabilities.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +73 -27
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +45 -10
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +23 -45
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +6 -7
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +61 -21
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +10 -0
- package/dist/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/cluster/ShardingConfig.js.map +1 -1
- package/dist/cluster/Snowflake.d.ts.map +1 -1
- package/dist/cluster/Snowflake.js +3 -7
- package/dist/cluster/Snowflake.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +87 -39
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +54 -20
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +2 -0
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64.js +36 -0
- package/dist/encoding/Base64.js.map +1 -1
- package/dist/encoding/Sse.d.ts.map +1 -1
- package/dist/encoding/Sse.js +3 -3
- package/dist/encoding/Sse.js.map +1 -1
- package/dist/encoding/Toml.d.ts.map +1 -1
- package/dist/encoding/Toml.js +21 -16
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +47 -27
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/internal/conflicts.d.ts +0 -1
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
- package/dist/eventlog/internal/conflicts.js +0 -3
- package/dist/eventlog/internal/conflicts.js.map +1 -1
- package/dist/http/Cookies.d.ts.map +1 -1
- package/dist/http/Cookies.js +10 -9
- package/dist/http/Cookies.js.map +1 -1
- package/dist/http/HttpClient.d.ts +423 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +231 -7
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientError.d.ts +8 -1
- package/dist/http/HttpClientError.d.ts.map +1 -1
- package/dist/http/HttpClientError.js +37 -1
- package/dist/http/HttpClientError.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +1 -1
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +1 -1
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +14 -16
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +2 -1
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.js +2 -2
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +6 -1
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +73 -10
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +48 -21
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +3 -3
- package/dist/http/UrlParams.d.ts +3 -1
- package/dist/http/UrlParams.d.ts.map +1 -1
- package/dist/http/UrlParams.js +4 -2
- package/dist/http/UrlParams.js.map +1 -1
- package/dist/http/internal/compression.js +4 -5
- package/dist/http/internal/compression.js.map +1 -1
- package/dist/http/internal/decompression.js +3 -0
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/httpBody.js +8 -1
- package/dist/http/internal/httpBody.js.map +1 -1
- package/dist/http/internal/urlParams.js +25 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- package/dist/http-api/HttpApi.d.ts +3 -6
- package/dist/http-api/HttpApi.d.ts.map +1 -1
- package/dist/http-api/HttpApi.js +3 -6
- package/dist/http-api/HttpApi.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +27 -11
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +77 -7
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +142 -44
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +109 -27
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +76 -29
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +70 -59
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +3 -2
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +25 -16
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
- package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
- package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
- package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
- package/dist/internal/arbitrary/runner.d.ts.map +1 -1
- package/dist/internal/arbitrary/runner.js +120 -44
- package/dist/internal/arbitrary/runner.js.map +1 -1
- package/dist/internal/core.js +2 -0
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/effect.js +21 -13
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js +14 -0
- package/dist/internal/equal.js.map +1 -1
- package/dist/internal/jsonSchema.d.ts +2 -0
- package/dist/internal/jsonSchema.d.ts.map +1 -0
- package/dist/internal/jsonSchema.js +28 -0
- package/dist/internal/jsonSchema.js.map +1 -0
- package/dist/internal/matcher.js +1 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/schema/compilerRegistry.js +4 -1
- package/dist/internal/schema/compilerRegistry.js.map +1 -1
- package/dist/internal/schema/content.d.ts +2 -0
- package/dist/internal/schema/content.d.ts.map +1 -0
- package/dist/internal/schema/content.js +13 -0
- package/dist/internal/schema/content.js.map +1 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js +173 -185
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/fromRepresentation.js +2 -1
- package/dist/internal/schema/fromRepresentation.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +8 -2
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +3 -3
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +21 -24
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toRepresentation.js +107 -129
- package/dist/internal/schema/toRepresentation.js.map +1 -1
- package/dist/internal/sql.d.ts +2 -0
- package/dist/internal/sql.d.ts.map +1 -0
- package/dist/internal/sql.js +13 -0
- package/dist/internal/sql.js.map +1 -0
- package/dist/internal/version.js +1 -1
- package/dist/observability/OtlpProxy.d.ts +154 -0
- package/dist/observability/OtlpProxy.d.ts.map +1 -0
- package/dist/observability/OtlpProxy.js +235 -0
- package/dist/observability/OtlpProxy.js.map +1 -0
- package/dist/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/observability/OtlpTracer.js +4 -0
- package/dist/observability/OtlpTracer.js.map +1 -1
- package/dist/observability/index.d.ts +5 -0
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/persistence/CircuitBreaker.d.ts +897 -0
- package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
- package/dist/persistence/CircuitBreaker.js +1165 -0
- package/dist/persistence/CircuitBreaker.js.map +1 -0
- package/dist/persistence/Redis.d.ts +78 -2
- package/dist/persistence/Redis.d.ts.map +1 -1
- package/dist/persistence/Redis.js +62 -7
- package/dist/persistence/Redis.js.map +1 -1
- package/dist/persistence/index.d.ts +5 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +5 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +30 -4
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/process/ChildProcessSpawner.d.ts +30 -0
- package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/process/ChildProcessSpawner.js +5 -2
- package/dist/process/ChildProcessSpawner.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts +1 -1
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +9 -8
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +14 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +20 -8
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +11 -1
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/rpc/RpcTest.d.ts +1 -0
- package/dist/rpc/RpcTest.d.ts.map +1 -1
- package/dist/rpc/RpcTest.js +1 -0
- package/dist/rpc/RpcTest.js.map +1 -1
- package/dist/sql/Migrator.d.ts +2 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +11 -8
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +9 -4
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +8 -1
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +4 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +18 -4
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +7 -0
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +21 -2
- package/dist/sql/Statement.js.map +1 -1
- package/dist/workflow/DurableDeferred.d.ts.map +1 -1
- package/dist/workflow/DurableDeferred.js +21 -2
- package/dist/workflow/DurableDeferred.js.map +1 -1
- package/package.json +1 -1
- package/src/Arbitrary.ts +10 -2
- package/src/Channel.ts +47 -18
- package/src/Data.ts +60 -265
- package/src/Effect.ts +1 -1
- package/src/Equal.ts +8 -1
- package/src/Exit.ts +3 -3
- package/src/Formatter.ts +28 -13
- package/src/Hash.ts +4 -1
- package/src/JsonPatch.ts +4 -0
- package/src/JsonSchema.ts +12 -40
- package/src/Metric.ts +3 -3
- package/src/MutableList.ts +7 -5
- package/src/MutableRef.ts +8 -1
- package/src/PartitionedSemaphore.ts +24 -13
- package/src/Pool.ts +109 -37
- package/src/PubSub.ts +5 -6
- package/src/Ref.ts +8 -0
- package/src/Schedule.ts +1 -1
- package/src/Schema.ts +48 -25
- package/src/SchemaAST.ts +20 -20
- package/src/SchemaParser.ts +51 -18
- package/src/SchemaRepresentation.ts +31 -34
- package/src/SchemaTransformation.ts +9 -2
- package/src/Semaphore.ts +67 -40
- package/src/Sink.ts +15 -2
- package/src/Stream.ts +33 -16
- package/src/String.ts +3 -0
- package/src/Tracer.ts +15 -1
- package/src/ai/LanguageModel.ts +9 -0
- package/src/ai/McpServer.ts +14 -13
- package/src/ai/Prompt.ts +65 -0
- package/src/ai/Response.ts +34 -9
- package/src/ai/Tool.ts +38 -2
- package/src/ai/Toolkit.ts +4 -1
- package/src/cli/Argument.ts +15 -0
- package/src/cli/CliError.ts +90 -3
- package/src/cli/CliOutput.ts +183 -6
- package/src/cli/Command.ts +53 -41
- package/src/cli/Completions.ts +51 -0
- package/src/cli/Flag.ts +15 -0
- package/src/cli/GlobalFlag.ts +6 -7
- package/src/cli/Param.ts +29 -6
- package/src/cli/TerminalCapabilities.ts +6 -3
- package/src/cli/internal/completions/bash.ts +79 -29
- package/src/cluster/ClusterWorkflowEngine.ts +46 -16
- package/src/cluster/MessageStorage.ts +19 -14
- package/src/cluster/Sharding.ts +83 -21
- package/src/cluster/ShardingConfig.ts +5 -0
- package/src/cluster/Snowflake.ts +3 -7
- package/src/cluster/SqlRunnerStorage.ts +110 -47
- package/src/cluster/internal/entityManager.ts +75 -22
- package/src/devtools/DevToolsClient.ts +2 -0
- package/src/encoding/Base64.ts +38 -0
- package/src/encoding/Sse.ts +4 -3
- package/src/encoding/Toml.ts +33 -16
- package/src/eventlog/SqlEventJournal.ts +68 -45
- package/src/eventlog/internal/conflicts.ts +0 -4
- package/src/http/Cookies.ts +10 -11
- package/src/http/HttpClient.ts +547 -7
- package/src/http/HttpClientError.ts +35 -1
- package/src/http/HttpClientRequest.ts +9 -1
- package/src/http/HttpMiddleware.ts +15 -18
- package/src/http/HttpRouter.ts +2 -1
- package/src/http/HttpServerError.ts +2 -2
- package/src/http/HttpServerRequest.ts +102 -16
- package/src/http/HttpStaticServer.ts +51 -22
- package/src/http/MultipartParser/internal/contentType.ts +3 -3
- package/src/http/UrlParams.ts +6 -1
- package/src/http/internal/compression.ts +4 -5
- package/src/http/internal/decompression.ts +6 -0
- package/src/http/internal/httpBody.ts +10 -2
- package/src/http/internal/urlParams.ts +29 -0
- package/src/http-api/HttpApi.ts +3 -6
- package/src/http-api/HttpApiBuilder.ts +45 -15
- package/src/http-api/HttpApiClient.ts +218 -72
- package/src/http-api/HttpApiEndpoint.ts +121 -30
- package/src/http-api/HttpApiSchema.ts +141 -48
- package/src/http-api/HttpApiTest.ts +3 -2
- package/src/http-api/OpenApi.ts +20 -17
- package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
- package/src/internal/arbitrary/runner.ts +133 -36
- package/src/internal/core.ts +2 -0
- package/src/internal/effect.ts +24 -16
- package/src/internal/equal.ts +17 -0
- package/src/internal/jsonSchema.ts +27 -0
- package/src/internal/matcher.ts +1 -1
- package/src/internal/schema/compilerRegistry.ts +6 -1
- package/src/internal/schema/content.ts +18 -0
- package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
- package/src/internal/schema/fromRepresentation.ts +2 -1
- package/src/internal/schema/standardSchema.ts +2 -2
- package/src/internal/schema/toCodeDocument.ts +4 -4
- package/src/internal/schema/toCodec.ts +26 -22
- package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
- package/src/internal/schema/toRepresentation.ts +122 -140
- package/src/internal/sql.ts +14 -0
- package/src/internal/version.ts +1 -1
- package/src/observability/OtlpProxy.ts +314 -0
- package/src/observability/OtlpTracer.ts +4 -0
- package/src/observability/index.ts +6 -0
- package/src/persistence/CircuitBreaker.ts +1678 -0
- package/src/persistence/Redis.ts +129 -8
- package/src/persistence/index.ts +6 -0
- package/src/process/ChildProcess.ts +30 -4
- package/src/process/ChildProcessSpawner.ts +41 -2
- package/src/reactivity/AsyncResult.ts +1 -1
- package/src/rpc/RpcClient.ts +13 -10
- package/src/rpc/RpcSerialization.ts +32 -9
- package/src/rpc/RpcServer.ts +16 -1
- package/src/rpc/RpcTest.ts +3 -0
- package/src/sql/Migrator.ts +12 -7
- package/src/sql/SqlClient.ts +11 -4
- package/src/sql/SqlResolver.ts +23 -9
- package/src/sql/Statement.ts +30 -2
- package/src/workflow/DurableDeferred.ts +23 -6
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { escapeToken, parseUriFragment } from "../../JsonPointer.js";
|
|
2
2
|
import * as JsonSchema from "../../JsonSchema.js";
|
|
3
|
-
import
|
|
3
|
+
import * as Schema from "../../Schema.js";
|
|
4
4
|
import * as InternalAST from "../../SchemaAST.js";
|
|
5
5
|
import { errorWithPath } from "../errors.js";
|
|
6
|
+
import * as InternalJsonSchema from "../jsonSchema.js";
|
|
6
7
|
import * as InternalRecord from "../record.js";
|
|
7
8
|
import * as InternalAnnotations from "./annotations.js";
|
|
8
|
-
import {
|
|
9
|
+
import { ReferenceSlot } from "./fromRepresentation.js";
|
|
9
10
|
const never = {
|
|
10
11
|
_tag: "Never",
|
|
11
12
|
checks: []
|
|
@@ -18,6 +19,13 @@ const string = {
|
|
|
18
19
|
_tag: "String",
|
|
19
20
|
checks: []
|
|
20
21
|
};
|
|
22
|
+
const primitiveSchemas = {
|
|
23
|
+
Never: Schema.Never,
|
|
24
|
+
Null: Schema.Null,
|
|
25
|
+
String: Schema.String,
|
|
26
|
+
Number: Schema.Number,
|
|
27
|
+
Boolean: Schema.Boolean
|
|
28
|
+
};
|
|
21
29
|
const unsupportedStructuredValue = "Only primitive values are supported in \"const\" and \"enum\".";
|
|
22
30
|
const jsonSchemaPatternFlags = "u";
|
|
23
31
|
function isObject(input) {
|
|
@@ -46,24 +54,15 @@ function isImportedJsonSchemaType(input) {
|
|
|
46
54
|
function hasTypeSpecificKeywords(schema) {
|
|
47
55
|
return jsonSchemaTypeSpecificKeys.some(key => schema[key] !== undefined);
|
|
48
56
|
}
|
|
49
|
-
function
|
|
57
|
+
function makeFilter(filter) {
|
|
50
58
|
return {
|
|
51
59
|
_tag: "Filter",
|
|
52
|
-
|
|
53
|
-
representation: {
|
|
54
|
-
id,
|
|
55
|
-
payload,
|
|
56
|
-
...(schemas === undefined ? undefined : {
|
|
57
|
-
schemas
|
|
58
|
-
})
|
|
59
|
-
}
|
|
60
|
+
filter
|
|
60
61
|
};
|
|
61
62
|
}
|
|
62
|
-
function addNumberCheck(checks, value,
|
|
63
|
+
function addNumberCheck(checks, value, make) {
|
|
63
64
|
if (typeof value === "number") {
|
|
64
|
-
checks.push(
|
|
65
|
-
[key]: value
|
|
66
|
-
}));
|
|
65
|
+
checks.push(makeFilter(make(value)));
|
|
67
66
|
}
|
|
68
67
|
}
|
|
69
68
|
function jsonSchemaAnnotations(schema, options) {
|
|
@@ -91,116 +90,84 @@ function jsonSchemaAnnotations(schema, options) {
|
|
|
91
90
|
customAnnotations
|
|
92
91
|
};
|
|
93
92
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
_tag: "Declaration",
|
|
97
|
-
representation: {
|
|
98
|
-
id: "effect/schema/Json",
|
|
99
|
-
payload: null
|
|
100
|
-
},
|
|
101
|
-
annotations: {
|
|
102
|
-
...annotations,
|
|
103
|
-
expected: "JSON value"
|
|
104
|
-
},
|
|
105
|
-
checks: [],
|
|
106
|
-
typeParameters: []
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
function translateJsonSchemaMultiDocument(document, options, singleRoot = false) {
|
|
93
|
+
/** @internal */
|
|
94
|
+
export function fromJsonSchemaMultiDocument(document, options, singleRoot = false) {
|
|
110
95
|
const definitionCache = new Map();
|
|
96
|
+
const validatedAliases = new Set();
|
|
111
97
|
const resolvingChoices = new Set();
|
|
112
|
-
const
|
|
98
|
+
const references = new Map();
|
|
113
99
|
let inNestedResource = false;
|
|
114
100
|
function finalize(input) {
|
|
115
101
|
const annotations = mergeAnnotations(input.annotations, input.customAnnotations);
|
|
116
102
|
if (input._tag === "Reference") {
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
checks: [],
|
|
128
|
-
annotations
|
|
129
|
-
};
|
|
103
|
+
if (annotations !== undefined) resolveReference(input, input.path);
|
|
104
|
+
let slot = references.get(input.$ref);
|
|
105
|
+
if (slot === undefined) {
|
|
106
|
+
slot = new ReferenceSlot(input.$ref);
|
|
107
|
+
references.set(input.$ref, slot);
|
|
108
|
+
slot.body = finalize(translateDefinition(input.$ref, input.path)).annotate({
|
|
109
|
+
identifier: input.$ref
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return annotations === undefined ? slot.body ?? slot.wrapper : slot.wrapper.annotate(annotations);
|
|
130
113
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
...node
|
|
134
|
-
} = input;
|
|
135
|
-
const representation = {
|
|
136
|
-
...node,
|
|
137
|
-
annotations,
|
|
138
|
-
checks: node.checks.map(finalizeCheck)
|
|
139
|
-
};
|
|
140
|
-
switch (representation._tag) {
|
|
114
|
+
let schema;
|
|
115
|
+
switch (input._tag) {
|
|
141
116
|
case "Unknown":
|
|
142
|
-
return
|
|
117
|
+
return Schema.Json.annotate({
|
|
118
|
+
...annotations,
|
|
119
|
+
expected: "JSON value"
|
|
120
|
+
});
|
|
121
|
+
case "Never":
|
|
122
|
+
case "Null":
|
|
123
|
+
case "String":
|
|
124
|
+
case "Number":
|
|
125
|
+
case "Boolean":
|
|
126
|
+
schema = primitiveSchemas[input._tag];
|
|
127
|
+
break;
|
|
128
|
+
case "Literal":
|
|
129
|
+
schema = Schema.Literal(input.literal);
|
|
130
|
+
break;
|
|
143
131
|
case "Arrays":
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
rest:
|
|
151
|
-
|
|
132
|
+
{
|
|
133
|
+
const elements = input.elements.map(element => {
|
|
134
|
+
const type = finalize(element.type);
|
|
135
|
+
return element.isOptional ? Schema.optionalKey(type) : type;
|
|
136
|
+
});
|
|
137
|
+
const rest = input.rest[0] === undefined ? undefined : finalize(input.rest[0]);
|
|
138
|
+
schema = rest !== undefined ? elements.length === 0 ? Schema.Array(rest) : Schema.TupleWithRest(Schema.Tuple(elements), [rest]) : Schema.Tuple(elements);
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
152
141
|
case "Objects":
|
|
153
142
|
{
|
|
154
|
-
// Intersections may
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
scopes,
|
|
158
|
-
path,
|
|
159
|
-
...object
|
|
160
|
-
} = representation;
|
|
161
|
-
if (representation.indexSignatures[0]?.parameter === string && scopes.some(scope => scope.patterns.length > 0)) {
|
|
162
|
-
throw errorWithPath("Cannot import open \"patternProperties\": unmatched keys cannot be typed correctly.", path);
|
|
143
|
+
// Intersections may remove open patterns, so check the normalized object.
|
|
144
|
+
if (input.indexSignatures[0]?.parameter === string && input.scopes.some(scope => scope.patterns.length > 0)) {
|
|
145
|
+
throw errorWithPath("Cannot import open \"patternProperties\": unmatched keys cannot be typed correctly.", input.path);
|
|
163
146
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}))
|
|
174
|
-
};
|
|
147
|
+
const fields = {};
|
|
148
|
+
for (const property of input.propertySignatures) {
|
|
149
|
+
const type = finalize(property.type);
|
|
150
|
+
InternalRecord.assignProperty(fields, property.name, property.isOptional ? Schema.optionalKey(type) : type);
|
|
151
|
+
}
|
|
152
|
+
const index = input.indexSignatures[0];
|
|
153
|
+
const record = index === undefined ? undefined : Schema.Record(finalize(index.parameter), finalize(index.type));
|
|
154
|
+
schema = record !== undefined ? input.propertySignatures.length === 0 ? record : Schema.StructWithRest(Schema.Struct(fields), [record]) : Schema.Struct(fields);
|
|
155
|
+
break;
|
|
175
156
|
}
|
|
176
157
|
case "Union":
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
types: representation.types.map(finalize)
|
|
180
|
-
};
|
|
181
|
-
default:
|
|
182
|
-
return representation;
|
|
158
|
+
schema = Schema.Union(input.types.map(finalize), input.options);
|
|
159
|
+
break;
|
|
183
160
|
}
|
|
161
|
+
if (annotations !== undefined) schema = schema.annotate(annotations);
|
|
162
|
+
const checks = input.checks.map(finalizeCheck);
|
|
163
|
+
return checks.length > 0 ? schema.check(...checks) : schema;
|
|
184
164
|
}
|
|
185
165
|
function finalizeCheck(check) {
|
|
186
166
|
if (check._tag === "FilterGroup") {
|
|
187
|
-
return
|
|
188
|
-
...check,
|
|
189
|
-
checks: check.checks.map(finalizeCheck)
|
|
190
|
-
};
|
|
167
|
+
return Schema.makeFilterGroup(check.checks.map(finalizeCheck), check.annotations);
|
|
191
168
|
}
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
if (schemas === undefined) {
|
|
195
|
-
return check;
|
|
196
|
-
}
|
|
197
|
-
return {
|
|
198
|
-
...check,
|
|
199
|
-
representation: {
|
|
200
|
-
...representation,
|
|
201
|
-
schemas: schemas.map(finalize)
|
|
202
|
-
}
|
|
203
|
-
};
|
|
169
|
+
const filter = check._tag === "PropertyNames" ? Schema.isPropertyNames(finalize(check.type)) : check.filter;
|
|
170
|
+
return check.annotations === undefined ? filter : filter.annotate(check.annotations);
|
|
204
171
|
}
|
|
205
172
|
function annotate(representation, source) {
|
|
206
173
|
if (source.annotations === undefined && source.customAnnotations === undefined) return representation;
|
|
@@ -219,10 +186,36 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
219
186
|
return cached;
|
|
220
187
|
}
|
|
221
188
|
definitionCache.set(key, null);
|
|
222
|
-
const
|
|
189
|
+
const pointer = pointers.get(key);
|
|
190
|
+
const wasInNestedResource = inNestedResource;
|
|
191
|
+
if (pointer !== undefined) inNestedResource = pointer.crossesResource;
|
|
192
|
+
const representation = pointer === undefined ? translateSchema(document.definitions[key], ["definitions", key]) : translateSchema(pointer.target, ["definitions", ...pointer.tokens]);
|
|
193
|
+
inNestedResource = wasInNestedResource;
|
|
223
194
|
definitionCache.set(key, representation);
|
|
195
|
+
if (pointer !== undefined) {
|
|
196
|
+
validatePointerAliases(representation, path, recursiveReferenceError);
|
|
197
|
+
}
|
|
224
198
|
return representation;
|
|
225
199
|
}
|
|
200
|
+
function validatePointerAliases(representation, path, recursiveReferenceError, visiting = new Set()) {
|
|
201
|
+
if (representation._tag === "Reference") {
|
|
202
|
+
const key = representation.$ref;
|
|
203
|
+
if (validatedAliases.has(key)) return;
|
|
204
|
+
if (visiting.has(key)) {
|
|
205
|
+
throw errorWithPath(`Definition ${JSON.stringify(key)} is a circular alias.`, [...path, "$ref"]);
|
|
206
|
+
}
|
|
207
|
+
visiting.add(key);
|
|
208
|
+
validatePointerAliases(translateDefinition(key, path, recursiveReferenceError), path, recursiveReferenceError, visiting);
|
|
209
|
+
visiting.delete(key);
|
|
210
|
+
validatedAliases.add(key);
|
|
211
|
+
} else if (representation._tag === "Union") {
|
|
212
|
+
// Alternatives share completed checks, but only ancestors belong to the active path.
|
|
213
|
+
for (const type of representation.types) {
|
|
214
|
+
validatePointerAliases(type, path, recursiveReferenceError, visiting);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Recursion through object properties or array items consumes a child value.
|
|
218
|
+
}
|
|
226
219
|
function resolveReference(reference, path, recursiveReferenceError, seen = new Set()) {
|
|
227
220
|
if (seen.has(reference.$ref)) {
|
|
228
221
|
throw errorWithPath(`Definition ${JSON.stringify(reference.$ref)} is a circular alias.`, [...path, "$ref"]);
|
|
@@ -234,6 +227,46 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
234
227
|
}
|
|
235
228
|
return representation;
|
|
236
229
|
}
|
|
230
|
+
// Pointers below a definition are registered as definitions keyed by their escaped tokens, e.g. "O/properties/v"
|
|
231
|
+
const pointers = new Map();
|
|
232
|
+
function resolvePointer($ref, path) {
|
|
233
|
+
const pointer = $ref.startsWith("#") ? parseUriFragment($ref) : undefined;
|
|
234
|
+
if (pointer === undefined || pointer.length < 3 || pointer[0] !== "$defs") {
|
|
235
|
+
throw errorWithPath(`Unsupported $ref ${JSON.stringify($ref)}. Use "#/$defs/Name".`, [...path, "$ref"]);
|
|
236
|
+
}
|
|
237
|
+
const tokens = pointer.slice(1);
|
|
238
|
+
const key = tokens.map(escapeToken).join("/");
|
|
239
|
+
if (Object.hasOwn(document.definitions, key)) {
|
|
240
|
+
throw errorWithPath(`Pointer $ref ${JSON.stringify($ref)} conflicts with definition ${JSON.stringify(key)}.`, [...path, "$ref"]);
|
|
241
|
+
}
|
|
242
|
+
if (pointers.has(key)) return key;
|
|
243
|
+
// Walk through the onEnter result of each ancestor schema, as translateSchema would see it
|
|
244
|
+
let node = document.definitions;
|
|
245
|
+
let position = "container";
|
|
246
|
+
let crossesResource = false;
|
|
247
|
+
for (const token of tokens) {
|
|
248
|
+
if (position === "container") {
|
|
249
|
+
position = "schema";
|
|
250
|
+
} else if (position === "schema" && isObject(node)) {
|
|
251
|
+
if (options?.onEnter !== undefined) node = options.onEnter(node);
|
|
252
|
+
crossesResource ||= isObject(node) && typeof node.$id === "string";
|
|
253
|
+
const kind = InternalJsonSchema.getSubschemaKind(token);
|
|
254
|
+
position = kind === "schema" ? "schema" : kind === undefined ? "value" : "container";
|
|
255
|
+
} else {
|
|
256
|
+
position = "value";
|
|
257
|
+
}
|
|
258
|
+
node = typeof node === "object" && node !== null && Object.hasOwn(node, token) ? node[token] : undefined;
|
|
259
|
+
}
|
|
260
|
+
if (!isObject(node) && typeof node !== "boolean") {
|
|
261
|
+
throw errorWithPath(`Unresolvable $ref ${JSON.stringify($ref)}. Nothing exists at that location.`, [...path, "$ref"]);
|
|
262
|
+
}
|
|
263
|
+
pointers.set(key, {
|
|
264
|
+
target: node,
|
|
265
|
+
tokens,
|
|
266
|
+
crossesResource
|
|
267
|
+
});
|
|
268
|
+
return key;
|
|
269
|
+
}
|
|
237
270
|
function mergeAnnotations(left, right) {
|
|
238
271
|
if (left === undefined) return right;
|
|
239
272
|
if (right === undefined) return left;
|
|
@@ -248,8 +281,8 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
248
281
|
function intersectChecks(left, right, deduplicate = []) {
|
|
249
282
|
let checks = right.checks;
|
|
250
283
|
for (const id of deduplicate) {
|
|
251
|
-
if (left.checks.some(check => check._tag === "Filter" && check.representation?.id === id)) {
|
|
252
|
-
checks = checks.filter(check => check._tag !== "Filter" || check.representation?.id !== id);
|
|
284
|
+
if (left.checks.some(check => check._tag === "Filter" && check.filter.annotations?.representation?.id === id)) {
|
|
285
|
+
checks = checks.filter(check => check._tag !== "Filter" || check.filter.annotations?.representation?.id !== id);
|
|
253
286
|
}
|
|
254
287
|
}
|
|
255
288
|
const annotations = checks.length === 0 ? mergeAnnotations(left.annotations, right.annotations) : left.annotations;
|
|
@@ -273,32 +306,7 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
273
306
|
if (check._tag === "FilterGroup") {
|
|
274
307
|
return check.checks.every(check => satisfiesPrimitiveCheck(check, value));
|
|
275
308
|
}
|
|
276
|
-
|
|
277
|
-
const payload = representation.payload;
|
|
278
|
-
switch (representation.id) {
|
|
279
|
-
case "effect/schema/isMinLength":
|
|
280
|
-
return value.length >= payload.minLength;
|
|
281
|
-
case "effect/schema/isMinCodePoints":
|
|
282
|
-
return Iterable.size(value) >= payload.minCodePoints;
|
|
283
|
-
case "effect/schema/isMaxCodePoints":
|
|
284
|
-
return Iterable.size(value) <= payload.maxCodePoints;
|
|
285
|
-
case "effect/schema/isPattern":
|
|
286
|
-
return new RegExp(payload.source, payload.flags).test(value);
|
|
287
|
-
case "effect/schema/isFinite":
|
|
288
|
-
return globalThis.Number.isFinite(value);
|
|
289
|
-
case "effect/schema/isInt":
|
|
290
|
-
return globalThis.Number.isSafeInteger(value);
|
|
291
|
-
case "effect/schema/isMultipleOf":
|
|
292
|
-
return remainder(value, payload.divisor) === 0;
|
|
293
|
-
case "effect/schema/isGreaterThan":
|
|
294
|
-
return value > payload.exclusiveMinimum;
|
|
295
|
-
case "effect/schema/isGreaterThanOrEqualTo":
|
|
296
|
-
return value >= payload.minimum;
|
|
297
|
-
case "effect/schema/isLessThan":
|
|
298
|
-
return value < payload.exclusiveMaximum;
|
|
299
|
-
case "effect/schema/isLessThanOrEqualTo":
|
|
300
|
-
return value <= payload.maximum;
|
|
301
|
-
}
|
|
309
|
+
return check._tag === "Filter" && check.filter.run(value, Schema.Unknown.ast, {}) === undefined;
|
|
302
310
|
}
|
|
303
311
|
function satisfiesLiteral(representation, literal) {
|
|
304
312
|
const value = literal.literal;
|
|
@@ -396,8 +404,7 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
396
404
|
properties.push({
|
|
397
405
|
name,
|
|
398
406
|
type,
|
|
399
|
-
isOptional
|
|
400
|
-
isMutable: false
|
|
407
|
+
isOptional
|
|
401
408
|
});
|
|
402
409
|
}
|
|
403
410
|
const indexSignatures = closedPattern !== undefined ? [{
|
|
@@ -474,7 +481,7 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
474
481
|
}
|
|
475
482
|
}
|
|
476
483
|
function checkHasChoices(check) {
|
|
477
|
-
return check._tag === "FilterGroup" ? check.checks.some(checkHasChoices) : check.
|
|
484
|
+
return check._tag === "FilterGroup" ? check.checks.some(checkHasChoices) : check._tag === "PropertyNames" && hasChoices(check.type);
|
|
478
485
|
}
|
|
479
486
|
function makeUnion(source, types) {
|
|
480
487
|
if (types.length === 0) return never;
|
|
@@ -688,13 +695,11 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
688
695
|
if (inNestedResource) {
|
|
689
696
|
throw errorWithPath("Cannot resolve $ref under a nested \"$id\". Resolve or flatten it first.", [...path, "$ref"]);
|
|
690
697
|
}
|
|
691
|
-
const
|
|
692
|
-
if (
|
|
693
|
-
throw errorWithPath(`
|
|
694
|
-
}
|
|
695
|
-
if (!Object.hasOwn(document.definitions, $ref)) {
|
|
696
|
-
throw errorWithPath(`Missing definition ${JSON.stringify($ref)} for $ref ${JSON.stringify(schema.$ref)}.`, [...path, "$ref"]);
|
|
698
|
+
const key = JsonSchema.getReferenceKey(schema.$ref);
|
|
699
|
+
if (key !== undefined && !Object.hasOwn(document.definitions, key)) {
|
|
700
|
+
throw errorWithPath(`Missing definition ${JSON.stringify(key)} for $ref ${JSON.stringify(schema.$ref)}.`, [...path, "$ref"]);
|
|
697
701
|
}
|
|
702
|
+
const $ref = key ?? resolvePointer(schema.$ref, path);
|
|
698
703
|
const reference = {
|
|
699
704
|
_tag: "Reference",
|
|
700
705
|
$ref,
|
|
@@ -755,7 +760,7 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
755
760
|
case "integer":
|
|
756
761
|
return {
|
|
757
762
|
_tag: "Number",
|
|
758
|
-
checks: [
|
|
763
|
+
checks: [makeFilter(type === "number" ? Schema.isFinite() : Schema.isInt()), ...collectNumberChecks(schema)]
|
|
759
764
|
};
|
|
760
765
|
case "boolean":
|
|
761
766
|
return {
|
|
@@ -804,21 +809,18 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
804
809
|
} catch {
|
|
805
810
|
throw errorWithPath("Cannot import pattern using ECMAScript Unicode mode.", path);
|
|
806
811
|
}
|
|
807
|
-
return
|
|
808
|
-
source: regex.source,
|
|
809
|
-
flags: regex.flags
|
|
810
|
-
});
|
|
812
|
+
return makeFilter(Schema.isPattern(regex));
|
|
811
813
|
}
|
|
812
814
|
}
|
|
813
815
|
}
|
|
814
816
|
function collectStringChecks(schema, path) {
|
|
815
817
|
const checks = [];
|
|
816
818
|
if (schema.minLength === 1) {
|
|
817
|
-
addNumberCheck(checks, schema.minLength,
|
|
819
|
+
addNumberCheck(checks, schema.minLength, Schema.isMinLength);
|
|
818
820
|
} else {
|
|
819
|
-
addNumberCheck(checks, schema.minLength,
|
|
821
|
+
addNumberCheck(checks, schema.minLength, Schema.isMinCodePoints);
|
|
820
822
|
}
|
|
821
|
-
addNumberCheck(checks, schema.maxLength,
|
|
823
|
+
addNumberCheck(checks, schema.maxLength, Schema.isMaxCodePoints);
|
|
822
824
|
if (typeof schema.pattern === "string") {
|
|
823
825
|
const check = importPatternCheck(schema.pattern, [...path, "pattern"]);
|
|
824
826
|
if (check !== undefined) checks.push(check);
|
|
@@ -827,23 +829,23 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
827
829
|
}
|
|
828
830
|
function collectNumberChecks(schema) {
|
|
829
831
|
const checks = [];
|
|
830
|
-
addNumberCheck(checks, schema.minimum,
|
|
831
|
-
addNumberCheck(checks, schema.maximum,
|
|
832
|
-
addNumberCheck(checks, schema.exclusiveMinimum,
|
|
833
|
-
addNumberCheck(checks, schema.exclusiveMaximum,
|
|
834
|
-
addNumberCheck(checks, schema.multipleOf,
|
|
832
|
+
addNumberCheck(checks, schema.minimum, Schema.isGreaterThanOrEqualTo);
|
|
833
|
+
addNumberCheck(checks, schema.maximum, Schema.isLessThanOrEqualTo);
|
|
834
|
+
addNumberCheck(checks, schema.exclusiveMinimum, Schema.isGreaterThan);
|
|
835
|
+
addNumberCheck(checks, schema.exclusiveMaximum, Schema.isLessThan);
|
|
836
|
+
addNumberCheck(checks, schema.multipleOf, Schema.isMultipleOf);
|
|
835
837
|
return checks;
|
|
836
838
|
}
|
|
837
839
|
function collectArrayChecks(schema, isMaxItemsRedundant) {
|
|
838
840
|
const checks = [];
|
|
839
841
|
if (!Array.isArray(schema.prefixItems) || typeof schema.minItems === "number" && schema.minItems > schema.prefixItems.length) {
|
|
840
|
-
addNumberCheck(checks, schema.minItems,
|
|
842
|
+
addNumberCheck(checks, schema.minItems, Schema.isMinLength);
|
|
841
843
|
}
|
|
842
844
|
if (!isMaxItemsRedundant) {
|
|
843
|
-
addNumberCheck(checks, schema.maxItems,
|
|
845
|
+
addNumberCheck(checks, schema.maxItems, Schema.isMaxLength);
|
|
844
846
|
}
|
|
845
847
|
if (schema.uniqueItems === true) {
|
|
846
|
-
checks.push(
|
|
848
|
+
checks.push(makeFilter(Schema.isUnique()));
|
|
847
849
|
}
|
|
848
850
|
return checks;
|
|
849
851
|
}
|
|
@@ -887,39 +889,25 @@ function translateJsonSchemaMultiDocument(document, options, singleRoot = false)
|
|
|
887
889
|
}
|
|
888
890
|
function collectObjectChecks(schema, path) {
|
|
889
891
|
const checks = [];
|
|
890
|
-
addNumberCheck(checks, schema.minProperties,
|
|
891
|
-
addNumberCheck(checks, schema.maxProperties,
|
|
892
|
+
addNumberCheck(checks, schema.minProperties, Schema.isMinProperties);
|
|
893
|
+
addNumberCheck(checks, schema.maxProperties, Schema.isMaxProperties);
|
|
892
894
|
if (schema.propertyNames !== undefined) {
|
|
893
895
|
const propertyNamesPath = [...path, "propertyNames"];
|
|
894
|
-
checks.push(
|
|
896
|
+
checks.push({
|
|
897
|
+
_tag: "PropertyNames",
|
|
898
|
+
type: intersect(string, translateSchema(schema.propertyNames, propertyNamesPath), propertyNamesPath)
|
|
899
|
+
});
|
|
895
900
|
}
|
|
896
901
|
return checks;
|
|
897
902
|
}
|
|
898
|
-
|
|
899
|
-
const representations = document.schemas.map((schema, index) => finalize(translateSchema(schema, singleRoot ? ["schema"] : ["schemas", index], true)));
|
|
900
|
-
// Definitions expanded away by intersections do not need a standalone output schema.
|
|
901
|
-
for (const [key, reference] of finalReferences) {
|
|
902
|
-
InternalRecord.assignProperty(references, key, finalize(translateDefinition(key, reference.path)));
|
|
903
|
-
}
|
|
904
|
-
return {
|
|
905
|
-
representations,
|
|
906
|
-
references
|
|
907
|
-
};
|
|
903
|
+
return document.schemas.map((schema, index) => finalize(translateSchema(schema, singleRoot ? ["schema"] : ["schemas", index], true)));
|
|
908
904
|
}
|
|
909
905
|
/** @internal */
|
|
910
|
-
export function fromJsonSchemaDocument(document, options
|
|
911
|
-
|
|
906
|
+
export function fromJsonSchemaDocument(document, options) {
|
|
907
|
+
return fromJsonSchemaMultiDocument({
|
|
912
908
|
dialect: document.dialect,
|
|
913
909
|
schemas: [document.schema],
|
|
914
910
|
definitions: document.definitions
|
|
915
|
-
}, options, true);
|
|
916
|
-
return fromRepresentation({
|
|
917
|
-
representation: translated.representations[0],
|
|
918
|
-
references: translated.references
|
|
919
|
-
}, revivers);
|
|
920
|
-
}
|
|
921
|
-
/** @internal */
|
|
922
|
-
export function fromJsonSchemaMultiDocument(document, options, revivers) {
|
|
923
|
-
return fromRepresentations(translateJsonSchemaMultiDocument(document, options), revivers);
|
|
911
|
+
}, options, true)[0];
|
|
924
912
|
}
|
|
925
913
|
//# sourceMappingURL=fromJsonSchemaDocument.js.map
|