effect 4.0.5 → 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/ai-docs/package.json +1 -1
- package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
- package/ai-docs/tsconfig.json +3 -1
- 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/Array.d.ts +117 -52
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +41 -20
- package/dist/Array.js.map +1 -1
- package/dist/Bytes.d.ts +79 -0
- package/dist/Bytes.d.ts.map +1 -0
- package/dist/Bytes.js +109 -0
- package/dist/Bytes.js.map +1 -0
- package/dist/Channel.d.ts +181 -13
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +144 -34
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +39 -21
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +26 -17
- package/dist/Chunk.js.map +1 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +8 -3
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +2 -1
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Cron.d.ts +2 -2
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +6 -3
- package/dist/Cron.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/Duration.d.ts.map +1 -1
- package/dist/Duration.js +56 -16
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +488 -164
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +204 -38
- package/dist/Effect.js.map +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/Equivalence.d.ts +2 -1
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +12 -8
- package/dist/Equivalence.js.map +1 -1
- package/dist/Exit.d.ts +27 -12
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +8 -3
- package/dist/Exit.js.map +1 -1
- package/dist/FiberHandle.d.ts +2 -0
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +9 -4
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +2 -0
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +5 -2
- package/dist/FiberMap.js.map +1 -1
- package/dist/FileSystem.d.ts +5 -0
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +3 -0
- package/dist/FileSystem.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/Graph.d.ts.map +1 -1
- package/dist/Graph.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/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +18 -17
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonPatch.js +4 -0
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonSchema.d.ts +9 -3
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +32 -43
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +2 -2
- package/dist/Layer.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +19 -1
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +62 -6
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Metric.d.ts +135 -3
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +197 -25
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js.map +1 -1
- 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/Number.js +2 -2
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.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/Path.d.ts.map +1 -1
- package/dist/Path.js +8 -1
- package/dist/Path.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 +17 -13
- package/dist/PubSub.js.map +1 -1
- package/dist/Queue.d.ts +4 -1
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +4 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +1 -1
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +12 -7
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +9 -6
- package/dist/RcMap.js.map +1 -1
- package/dist/Record.d.ts +51 -0
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +17 -0
- package/dist/Record.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/References.d.ts +5 -4
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +5 -4
- package/dist/References.js.map +1 -1
- package/dist/RequestResolver.d.ts +31 -1
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +39 -4
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Runtime.d.ts +3 -3
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +18 -15
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +1 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +408 -340
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +370 -47
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +9 -7
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +38 -25
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +8 -3
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +15 -5
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +4 -4
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +29 -51
- package/dist/SchemaIssue.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 +75 -11
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +41 -13
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +5 -2
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +10 -3
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Scope.d.ts +12 -2
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +5 -0
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.d.ts +10 -7
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +9 -5
- package/dist/ScopedCache.js.map +1 -1
- package/dist/SemVer.d.ts +1196 -0
- package/dist/SemVer.d.ts.map +1 -0
- package/dist/SemVer.js +756 -0
- package/dist/SemVer.js.map +1 -0
- package/dist/SemVerRange.d.ts +559 -0
- package/dist/SemVerRange.d.ts.map +1 -0
- package/dist/SemVerRange.js +551 -0
- package/dist/SemVerRange.js.map +1 -0
- 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 +13 -4
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +235 -8
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +167 -70
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +7 -2
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +11 -6
- package/dist/String.js.map +1 -1
- package/dist/TextDiff.d.ts +399 -0
- package/dist/TextDiff.d.ts.map +1 -0
- package/dist/TextDiff.js +634 -0
- package/dist/TextDiff.js.map +1 -0
- 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/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js.map +1 -1
- package/dist/ai/AiError.d.ts +68 -4
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +50 -2
- package/dist/ai/AiError.js.map +1 -1
- package/dist/ai/Chat.d.ts +1 -2
- package/dist/ai/Chat.d.ts.map +1 -1
- package/dist/ai/Chat.js +6 -3
- package/dist/ai/Chat.js.map +1 -1
- package/dist/ai/Decision.d.ts +46 -1
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +129 -11
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +182 -94
- package/dist/ai/DecisionModel.js.map +1 -1
- package/dist/ai/EmbeddingModel.d.ts +10 -0
- package/dist/ai/EmbeddingModel.d.ts.map +1 -1
- package/dist/ai/EmbeddingModel.js +21 -7
- package/dist/ai/EmbeddingModel.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/McpClient.d.ts +289 -0
- package/dist/ai/McpClient.d.ts.map +1 -0
- package/dist/ai/McpClient.js +819 -0
- package/dist/ai/McpClient.js.map +1 -0
- package/dist/ai/McpClientError.d.ts +254 -0
- package/dist/ai/McpClientError.d.ts.map +1 -0
- package/dist/ai/McpClientError.js +260 -0
- package/dist/ai/McpClientError.js.map +1 -0
- package/dist/ai/McpProtocol.d.ts +2 -2
- package/dist/ai/McpProtocol.d.ts.map +1 -1
- package/dist/ai/McpSchema.d.ts +258 -125
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +94 -24
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +46 -37
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts +74 -20
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +61 -1
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +160 -3
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +39 -37
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +36 -4
- 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 +48 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +73 -13
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/ai/index.d.ts +10 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +10 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +16 -2
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +3 -4
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
- package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
- package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
- package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
- package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
- package/dist/ai/internal/mcpSchema/v2026_07_28.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 +120 -2
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +106 -5
- 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 +310 -18
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +164 -33
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +63 -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 +130 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +61 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +14 -6
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Param.d.ts +116 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +77 -2
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +85 -0
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
- package/dist/cli/TerminalCapabilities.js +124 -0
- package/dist/cli/TerminalCapabilities.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/internal/command.d.ts +2 -1
- package/dist/cli/internal/command.d.ts.map +1 -1
- package/dist/cli/internal/command.js +5 -2
- package/dist/cli/internal/command.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +77 -30
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/completions/descriptor.js +9 -1
- package/dist/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/cli/internal/completions/fish.js +10 -8
- package/dist/cli/internal/completions/fish.js.map +1 -1
- package/dist/cli/internal/completions/powershell.js +18 -9
- package/dist/cli/internal/completions/powershell.js.map +1 -1
- package/dist/cli/internal/completions/zsh.js +8 -5
- package/dist/cli/internal/completions/zsh.js.map +1 -1
- package/dist/cli/internal/formatter.d.ts +2 -0
- package/dist/cli/internal/formatter.d.ts.map +1 -0
- package/dist/cli/internal/formatter.js +15 -0
- package/dist/cli/internal/formatter.js.map +1 -0
- package/dist/cli/internal/lexer.js +24 -10
- package/dist/cli/internal/lexer.js.map +1 -1
- package/dist/cli/internal/parser.js +24 -12
- package/dist/cli/internal/parser.js.map +1 -1
- package/dist/cluster/ClusterCron.d.ts +29 -1
- package/dist/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/cluster/ClusterCron.js +64 -32
- package/dist/cluster/ClusterCron.js.map +1 -1
- package/dist/cluster/ClusterMetrics.d.ts +143 -7
- package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
- package/dist/cluster/ClusterMetrics.js +151 -7
- package/dist/cluster/ClusterMetrics.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +82 -21
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Entity.d.ts +2 -0
- package/dist/cluster/Entity.d.ts.map +1 -1
- package/dist/cluster/Entity.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +44 -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/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +54 -15
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts +1 -0
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +155 -52
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +30 -0
- package/dist/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/cluster/ShardingConfig.js +4 -0
- 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/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +40 -50
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +97 -43
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +119 -28
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/devtools/DevTools.d.ts +3 -2
- package/dist/devtools/DevTools.d.ts.map +1 -1
- package/dist/devtools/DevTools.js +3 -2
- package/dist/devtools/DevTools.js.map +1 -1
- package/dist/devtools/DevToolsClient.d.ts +11 -0
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +33 -4
- 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/Base64Url.d.ts +29 -0
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +29 -0
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Ini.d.ts.map +1 -1
- package/dist/encoding/Ini.js +3 -0
- package/dist/encoding/Ini.js.map +1 -1
- package/dist/encoding/JsonArray.d.ts +270 -0
- package/dist/encoding/JsonArray.d.ts.map +1 -0
- package/dist/encoding/JsonArray.js +691 -0
- package/dist/encoding/JsonArray.js.map +1 -0
- package/dist/encoding/Ndjson.d.ts +43 -4
- package/dist/encoding/Ndjson.d.ts.map +1 -1
- package/dist/encoding/Ndjson.js +169 -18
- package/dist/encoding/Ndjson.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts +9 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +12 -19
- package/dist/encoding/SchemaBinary.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/Tar.d.ts +309 -0
- package/dist/encoding/Tar.d.ts.map +1 -0
- package/dist/encoding/Tar.js +1182 -0
- package/dist/encoding/Tar.js.map +1 -0
- package/dist/encoding/Toml.d.ts.map +1 -1
- package/dist/encoding/Toml.js +24 -19
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Xml.d.ts +464 -0
- package/dist/encoding/Xml.d.ts.map +1 -0
- package/dist/encoding/Xml.js +1619 -0
- package/dist/encoding/Xml.js.map +1 -0
- package/dist/encoding/Yaml.d.ts +6 -2
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +97 -34
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/Zip.d.ts +413 -0
- package/dist/encoding/Zip.d.ts.map +1 -0
- package/dist/encoding/Zip.js +1255 -0
- package/dist/encoding/Zip.js.map +1 -0
- package/dist/encoding/index.d.ts +20 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +20 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventJournal.d.ts +90 -5
- package/dist/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/eventlog/EventJournal.js +488 -228
- package/dist/eventlog/EventJournal.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +180 -12
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +394 -146
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogEncryption.d.ts +36 -30
- package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/eventlog/EventLogEncryption.js +97 -38
- package/dist/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/eventlog/EventLogMessage.d.ts +74 -34
- package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/eventlog/EventLogMessage.js +45 -11
- package/dist/eventlog/EventLogMessage.js.map +1 -1
- package/dist/eventlog/EventLogRemote.d.ts +45 -8
- package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/eventlog/EventLogRemote.js +51 -14
- package/dist/eventlog/EventLogRemote.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +46 -3
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +119 -19
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js +97 -70
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
- package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
- package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/EventRow.d.ts +288 -0
- package/dist/eventlog/EventRow.d.ts.map +1 -0
- package/dist/eventlog/EventRow.js +435 -0
- package/dist/eventlog/EventRow.js.map +1 -0
- package/dist/eventlog/SqlEventJournal.d.ts +18 -18
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +417 -169
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
- package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/index.d.ts +5 -0
- package/dist/eventlog/index.d.ts.map +1 -1
- package/dist/eventlog/index.js +5 -0
- package/dist/eventlog/index.js.map +1 -1
- package/dist/eventlog/internal/conflicts.d.ts +46 -0
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
- package/dist/eventlog/internal/conflicts.js +89 -0
- package/dist/eventlog/internal/conflicts.js.map +1 -0
- package/dist/graphql/GraphQLClientError.d.ts +2 -2
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
- package/dist/graphql/GraphQLClientError.js +4 -18
- package/dist/graphql/GraphQLClientError.js.map +1 -1
- package/dist/graphql/GraphQLProtocol.d.ts +12 -9
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +4 -3
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/graphql/GraphQLResolver.d.ts +2 -0
- package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
- package/dist/graphql/GraphQLResolver.js +74 -32
- package/dist/graphql/GraphQLResolver.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/FetchHttpClient.d.ts +8 -1
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +51 -4
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/FindMyWay/internal/router.js +10 -0
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/Headers.d.ts +227 -0
- package/dist/http/Headers.d.ts.map +1 -1
- package/dist/http/Headers.js +261 -0
- package/dist/http/Headers.js.map +1 -1
- package/dist/http/HttpClient.d.ts +516 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +286 -23
- 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 +127 -3
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +45 -3
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpClientResponse.d.ts +53 -0
- package/dist/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/http/HttpClientResponse.js +47 -0
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpEffect.d.ts +6 -2
- package/dist/http/HttpEffect.d.ts.map +1 -1
- package/dist/http/HttpEffect.js +21 -17
- package/dist/http/HttpEffect.js.map +1 -1
- package/dist/http/HttpIncomingMessage.d.ts +2 -1
- package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/http/HttpIncomingMessage.js +3 -23
- package/dist/http/HttpIncomingMessage.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +119 -2
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +173 -29
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +9 -3
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.d.ts +5 -2
- package/dist/http/HttpServerError.d.ts.map +1 -1
- package/dist/http/HttpServerError.js +7 -5
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +30 -5
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +109 -20
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts +17 -8
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +37 -21
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts +0 -12
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +65 -24
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +89 -7
- package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
- package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/headers.js +4 -12
- package/dist/http/MultipartParser/internal/headers.js.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.js +6 -27
- package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
- package/dist/http/Url.d.ts.map +1 -1
- package/dist/http/Url.js +6 -1
- package/dist/http/Url.js.map +1 -1
- 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 +20 -11
- 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/lazyStream.d.ts +2 -0
- package/dist/http/internal/lazyStream.d.ts.map +1 -0
- package/dist/http/internal/lazyStream.js +18 -0
- package/dist/http/internal/lazyStream.js.map +1 -0
- package/dist/http/internal/requestState.d.ts +2 -0
- package/dist/http/internal/requestState.d.ts.map +1 -0
- package/dist/http/internal/requestState.js +28 -0
- package/dist/http/internal/requestState.js.map +1 -0
- package/dist/http/internal/urlParams.js +25 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- package/dist/http/internal/webResponse.d.ts +2 -0
- package/dist/http/internal/webResponse.d.ts.map +1 -0
- package/dist/http/internal/webResponse.js +12 -0
- package/dist/http/internal/webResponse.js.map +1 -0
- 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 +4 -7
- 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 +142 -23
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +99 -4
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +218 -60
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +72 -29
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +140 -14
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +58 -0
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +38 -12
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiScalar.d.ts +2 -1
- package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
- package/dist/http-api/HttpApiScalar.js +6 -3
- package/dist/http-api/HttpApiScalar.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +242 -13
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +149 -5
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiSwagger.d.ts +5 -0
- package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
- package/dist/http-api/HttpApiSwagger.js +14 -4
- package/dist/http-api/HttpApiSwagger.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts +13 -2
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +33 -11
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts +17 -3
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +81 -47
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/path.js +35 -10
- package/dist/http-api/internal/path.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/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- 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 +3 -1
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +19 -7
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +106 -87
- 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/hashMap.js +2 -2
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hydration.d.ts +2 -0
- package/dist/internal/hydration.d.ts.map +1 -0
- package/dist/internal/hydration.js +15 -0
- package/dist/internal/hydration.js.map +1 -0
- package/dist/internal/inflate.d.ts +2 -0
- package/dist/internal/inflate.d.ts.map +1 -0
- package/dist/internal/inflate.js +680 -0
- package/dist/internal/inflate.js.map +1 -0
- 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/record.js +6 -0
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/request.js +20 -7
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schedule.js +17 -22
- package/dist/internal/schedule.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 +253 -255
- 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/interpreter.js +51 -36
- package/dist/internal/schema/interpreter.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +42 -35
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +10 -5
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +99 -17
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toFormatter.js +5 -5
- package/dist/internal/schema/toFormatter.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +257 -170
- 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/trie.js +1 -3
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/uuid.js +7 -3
- package/dist/internal/uuid.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/net/NetAddress.d.ts.map +1 -1
- package/dist/net/NetAddress.js +2 -8
- package/dist/net/NetAddress.js.map +1 -1
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +5 -12
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +5 -3
- package/dist/observability/OtlpMetrics.js.map +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/OtlpResource.d.ts +3 -1
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +11 -4
- package/dist/observability/OtlpResource.js.map +1 -1
- package/dist/observability/OtlpSerialization.d.ts +5 -0
- package/dist/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/observability/OtlpSerialization.js +14 -3
- package/dist/observability/OtlpSerialization.js.map +1 -1
- 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/observability/internal/protobuf.d.ts +0 -9
- package/dist/observability/internal/protobuf.d.ts.map +1 -1
- package/dist/observability/internal/protobuf.js +2 -10
- package/dist/observability/internal/protobuf.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/PersistedCache.d.ts.map +1 -1
- package/dist/persistence/PersistedCache.js +1 -1
- package/dist/persistence/PersistedCache.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +6 -2
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +162 -84
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/persistence/Persistence.d.ts +28 -0
- package/dist/persistence/Persistence.d.ts.map +1 -1
- package/dist/persistence/Persistence.js +36 -8
- package/dist/persistence/Persistence.js.map +1 -1
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +8 -12
- package/dist/persistence/RateLimiter.js.map +1 -1
- 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/UserDirectories.d.ts +129 -0
- package/dist/persistence/UserDirectories.d.ts.map +1 -0
- package/dist/persistence/UserDirectories.js +178 -0
- package/dist/persistence/UserDirectories.js.map +1 -0
- package/dist/persistence/index.d.ts +10 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +10 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +32 -5
- 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/reactivity/AsyncResult.js +1 -1
- package/dist/reactivity/AsyncResult.js.map +1 -1
- package/dist/reactivity/Atom.d.ts +69 -30
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +40 -15
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomHttpApi.d.ts +5 -5
- package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/reactivity/AtomHttpApi.js +1 -1
- package/dist/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/reactivity/AtomRegistry.d.ts +2 -2
- package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/reactivity/AtomRegistry.js +44 -9
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/reactivity/AtomRpc.d.ts +3 -3
- package/dist/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/reactivity/AtomRpc.js +1 -1
- package/dist/reactivity/AtomRpc.js.map +1 -1
- package/dist/reactivity/Hydration.d.ts.map +1 -1
- package/dist/reactivity/Hydration.js +46 -12
- package/dist/reactivity/Hydration.js.map +1 -1
- package/dist/reactivity/Reactivity.d.ts +71 -7
- package/dist/reactivity/Reactivity.d.ts.map +1 -1
- package/dist/reactivity/Reactivity.js +21 -12
- package/dist/reactivity/Reactivity.js.map +1 -1
- package/dist/rpc/Rpc.d.ts +18 -0
- package/dist/rpc/Rpc.d.ts.map +1 -1
- package/dist/rpc/Rpc.js +20 -0
- package/dist/rpc/Rpc.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +26 -2
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +198 -61
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +29 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +41 -13
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +20 -19
- 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/schema/Model.d.ts +1 -1
- package/dist/schema/VariantSchema.d.ts +22 -3
- package/dist/schema/VariantSchema.d.ts.map +1 -1
- package/dist/schema/VariantSchema.js +32 -18
- package/dist/schema/VariantSchema.js.map +1 -1
- package/dist/socket/Socket.d.ts +23 -1
- package/dist/socket/Socket.d.ts.map +1 -1
- package/dist/socket/Socket.js +36 -3
- package/dist/socket/Socket.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 +21 -6
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +148 -5
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +155 -27
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +13 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +27 -4
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +10 -1
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +45 -7
- package/dist/sql/Statement.js.map +1 -1
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +4 -2
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +7 -1
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +9 -3
- package/dist/testing/TestSchema.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/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +18 -4
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +13 -3
- package/src/Arbitrary.ts +10 -2
- package/src/Array.ts +128 -55
- package/src/Bytes.ts +111 -0
- package/src/Channel.ts +308 -452
- package/src/ChannelSchema.ts +1 -49
- package/src/Chunk.ts +55 -61
- package/src/Config.ts +12 -86
- package/src/ConfigProvider.ts +2 -1
- package/src/Cron.ts +6 -3
- package/src/Data.ts +60 -265
- package/src/Duration.ts +66 -16
- package/src/Effect.ts +503 -168
- package/src/Equal.ts +8 -1
- package/src/Equivalence.ts +7 -4
- package/src/Exit.ts +27 -12
- package/src/FiberHandle.ts +10 -9
- package/src/FiberMap.ts +13 -66
- package/src/FileSystem.ts +10 -0
- package/src/Formatter.ts +28 -13
- package/src/Graph.ts +171 -1263
- package/src/Hash.ts +4 -1
- package/src/HashSet.ts +0 -60
- package/src/Iterable.ts +15 -14
- package/src/JsonPatch.ts +4 -0
- package/src/JsonSchema.ts +40 -43
- package/src/Layer.ts +2 -2
- package/src/ManagedRuntime.ts +72 -6
- package/src/Metric.ts +252 -510
- package/src/MutableHashMap.ts +4 -473
- package/src/MutableList.ts +7 -5
- package/src/MutableRef.ts +8 -1
- package/src/Number.ts +2 -2
- package/src/Optic.ts +17 -332
- package/src/PartitionedSemaphore.ts +24 -13
- package/src/Path.ts +9 -1
- package/src/Pool.ts +109 -37
- package/src/PubSub.ts +17 -13
- package/src/Queue.ts +5 -37
- package/src/Random.ts +1 -1
- package/src/RcMap.ts +14 -8
- package/src/Record.ts +51 -0
- package/src/Ref.ts +15 -104
- package/src/References.ts +5 -4
- package/src/RequestResolver.ts +46 -87
- package/src/Resource.ts +1 -1
- package/src/Runtime.ts +19 -18
- package/src/Schedule.ts +3 -95
- package/src/Schema.ts +639 -381
- package/src/SchemaAST.ts +40 -29
- package/src/SchemaGetter.ts +22 -5
- package/src/SchemaIssue.ts +44 -53
- package/src/SchemaParser.ts +51 -18
- package/src/SchemaRepresentation.ts +95 -35
- package/src/SchemaTransformation.ts +10 -3
- package/src/Scope.ts +12 -2
- package/src/ScopedCache.ts +17 -142
- package/src/SemVer.ts +1528 -0
- package/src/SemVerRange.ts +883 -0
- package/src/Semaphore.ts +67 -40
- package/src/Sink.ts +21 -4
- package/src/Stream.ts +367 -1027
- package/src/String.ts +11 -8
- package/src/TextDiff.ts +766 -0
- package/src/Tracer.ts +15 -1
- package/src/TxHashMap.ts +1 -103
- package/src/TxHashSet.ts +48 -753
- package/src/ai/AiError.ts +66 -4
- package/src/ai/Chat.ts +10 -5
- package/src/ai/Decision.ts +49 -1
- package/src/ai/DecisionModel.ts +264 -108
- package/src/ai/EmbeddingModel.ts +25 -13
- package/src/ai/LanguageModel.ts +9 -0
- package/src/ai/McpClient.ts +1211 -0
- package/src/ai/McpClientError.ts +329 -0
- package/src/ai/McpProtocol.ts +2 -2
- package/src/ai/McpSchema.ts +153 -35
- package/src/ai/McpServer.ts +231 -233
- package/src/ai/Prompt.ts +114 -35
- package/src/ai/Response.ts +220 -65
- package/src/ai/Tool.ts +50 -6
- package/src/ai/Toolkit.ts +82 -11
- package/src/ai/index.ts +12 -0
- package/src/ai/internal/mcpCore.ts +13 -14
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
- package/src/ai/internal/mcpProtocol.ts +22 -2
- package/src/ai/internal/mcpRuntime.ts +3 -4
- package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
- package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
- package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
- package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
- package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
- package/src/cli/Argument.ts +15 -0
- package/src/cli/CliError.ts +136 -4
- package/src/cli/CliOutput.ts +183 -6
- package/src/cli/Command.ts +367 -48
- package/src/cli/Completions.ts +56 -0
- package/src/cli/Flag.ts +132 -0
- package/src/cli/GlobalFlag.ts +5 -6
- package/src/cli/Param.ts +151 -6
- package/src/cli/TerminalCapabilities.ts +159 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/internal/command.ts +8 -3
- package/src/cli/internal/completions/bash.ts +83 -32
- package/src/cli/internal/completions/descriptor.ts +11 -1
- package/src/cli/internal/completions/fish.ts +10 -8
- package/src/cli/internal/completions/powershell.ts +23 -14
- package/src/cli/internal/completions/zsh.ts +8 -5
- package/src/cli/internal/formatter.ts +18 -0
- package/src/cli/internal/lexer.ts +12 -5
- package/src/cli/internal/parser.ts +31 -11
- package/src/cluster/ClusterCron.ts +94 -35
- package/src/cluster/ClusterMetrics.ts +149 -7
- package/src/cluster/ClusterWorkflowEngine.ts +130 -57
- package/src/cluster/Entity.ts +4 -0
- package/src/cluster/MessageStorage.ts +26 -14
- package/src/cluster/Runners.ts +76 -25
- package/src/cluster/Sharding.ts +200 -58
- package/src/cluster/ShardingConfig.ts +20 -0
- package/src/cluster/Snowflake.ts +3 -7
- package/src/cluster/SqlMessageStorage.ts +58 -55
- package/src/cluster/SqlRunnerStorage.ts +120 -51
- package/src/cluster/internal/entityManager.ts +155 -32
- package/src/devtools/DevTools.ts +3 -2
- package/src/devtools/DevToolsClient.ts +29 -10
- package/src/encoding/Base64.ts +38 -0
- package/src/encoding/Base64Url.ts +31 -0
- package/src/encoding/Ini.ts +3 -0
- package/src/encoding/JsonArray.ts +849 -0
- package/src/encoding/Ndjson.ts +211 -20
- package/src/encoding/SchemaBinary.ts +14 -48
- package/src/encoding/Sse.ts +4 -3
- package/src/encoding/Tar.ts +1417 -0
- package/src/encoding/Toml.ts +36 -19
- package/src/encoding/Xml.ts +2037 -0
- package/src/encoding/Yaml.ts +108 -36
- package/src/encoding/Zip.ts +1558 -0
- package/src/encoding/index.ts +24 -0
- package/src/eventlog/EventJournal.ts +611 -227
- package/src/eventlog/EventLog.ts +496 -196
- package/src/eventlog/EventLogEncryption.ts +128 -43
- package/src/eventlog/EventLogMessage.ts +62 -11
- package/src/eventlog/EventLogRemote.ts +77 -21
- package/src/eventlog/EventLogServer.ts +162 -20
- package/src/eventlog/EventLogServerEncrypted.ts +121 -80
- package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
- package/src/eventlog/EventRow.ts +706 -0
- package/src/eventlog/SqlEventJournal.ts +496 -193
- package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
- package/src/eventlog/index.ts +6 -0
- package/src/eventlog/internal/conflicts.ts +119 -0
- package/src/graphql/GraphQLClientError.ts +5 -12
- package/src/graphql/GraphQLProtocol.ts +12 -9
- package/src/graphql/GraphQLResolver.ts +90 -239
- package/src/http/Cookies.ts +10 -11
- package/src/http/FetchHttpClient.ts +56 -6
- package/src/http/FindMyWay/internal/router.ts +11 -0
- package/src/http/Headers.ts +337 -154
- package/src/http/HttpClient.ts +673 -142
- package/src/http/HttpClientError.ts +35 -1
- package/src/http/HttpClientRequest.ts +151 -5
- package/src/http/HttpClientResponse.ts +71 -0
- package/src/http/HttpEffect.ts +25 -33
- package/src/http/HttpIncomingMessage.ts +3 -23
- package/src/http/HttpMiddleware.ts +194 -40
- package/src/http/HttpRouter.ts +10 -3
- package/src/http/HttpServerError.ts +8 -5
- package/src/http/HttpServerRequest.ts +172 -27
- package/src/http/HttpServerResponse.ts +49 -23
- package/src/http/HttpStaticServer.ts +71 -26
- package/src/http/MultipartParser/internal/contentType.ts +109 -8
- package/src/http/MultipartParser/internal/headers.ts +4 -16
- package/src/http/MultipartParser/internal/multipart.ts +10 -32
- package/src/http/Url.ts +6 -1
- package/src/http/UrlParams.ts +6 -1
- package/src/http/internal/compression.ts +4 -5
- package/src/http/internal/decompression.ts +32 -17
- package/src/http/internal/httpBody.ts +10 -2
- package/src/http/internal/lazyStream.ts +25 -0
- package/src/http/internal/requestState.ts +33 -0
- package/src/http/internal/urlParams.ts +29 -0
- package/src/http/internal/webResponse.ts +20 -0
- package/src/http-api/HttpApi.ts +4 -7
- package/src/http-api/HttpApiBuilder.ts +190 -32
- package/src/http-api/HttpApiClient.ts +364 -90
- package/src/http-api/HttpApiEndpoint.ts +248 -46
- package/src/http-api/HttpApiError.ts +55 -0
- package/src/http-api/HttpApiScalar.ts +4 -3
- package/src/http-api/HttpApiSchema.ts +373 -18
- package/src/http-api/HttpApiSwagger.ts +11 -4
- package/src/http-api/HttpApiTest.ts +36 -11
- package/src/http-api/OpenApi.ts +103 -58
- package/src/http-api/internal/path.ts +40 -12
- package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
- package/src/index.ts +24 -0
- package/src/internal/arbitrary/runner.ts +133 -36
- package/src/internal/core.ts +3 -1
- package/src/internal/dateTime.ts +20 -7
- package/src/internal/effect.ts +144 -100
- package/src/internal/equal.ts +17 -0
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/hydration.ts +15 -0
- package/src/internal/inflate.ts +710 -0
- package/src/internal/jsonSchema.ts +27 -0
- package/src/internal/matcher.ts +1 -1
- package/src/internal/record.ts +6 -0
- package/src/internal/request.ts +21 -6
- package/src/internal/schedule.ts +20 -39
- package/src/internal/schema/compilerRegistry.ts +6 -1
- package/src/internal/schema/content.ts +18 -0
- package/src/internal/schema/fromJsonSchemaDocument.ts +458 -351
- package/src/internal/schema/fromRepresentation.ts +2 -1
- package/src/internal/schema/interpreter.ts +58 -45
- package/src/internal/schema/standardSchema.ts +34 -32
- package/src/internal/schema/toCodeDocument.ts +12 -7
- package/src/internal/schema/toCodec.ts +134 -15
- package/src/internal/schema/toFormatter.ts +6 -6
- package/src/internal/schema/toJsonSchemaDocument.ts +246 -194
- package/src/internal/schema/toRepresentation.ts +122 -140
- package/src/internal/sql.ts +14 -0
- package/src/internal/trie.ts +1 -3
- package/src/internal/uuid.ts +15 -10
- package/src/internal/version.ts +1 -1
- package/src/net/NetAddress.ts +2 -9
- package/src/observability/OtlpExporter.ts +5 -12
- package/src/observability/OtlpMetrics.ts +5 -3
- package/src/observability/OtlpProxy.ts +314 -0
- package/src/observability/OtlpResource.ts +16 -6
- package/src/observability/OtlpSerialization.ts +17 -3
- package/src/observability/OtlpTracer.ts +4 -0
- package/src/observability/index.ts +6 -0
- package/src/observability/internal/protobuf.ts +2 -10
- package/src/persistence/CircuitBreaker.ts +1678 -0
- package/src/persistence/PersistedCache.ts +3 -1
- package/src/persistence/PersistedQueue.ts +223 -153
- package/src/persistence/Persistence.ts +64 -30
- package/src/persistence/RateLimiter.ts +18 -21
- package/src/persistence/Redis.ts +129 -8
- package/src/persistence/UserDirectories.ts +273 -0
- package/src/persistence/index.ts +12 -0
- package/src/process/ChildProcess.ts +32 -5
- package/src/process/ChildProcessSpawner.ts +41 -2
- package/src/reactivity/AsyncResult.ts +5 -39
- package/src/reactivity/Atom.ts +134 -166
- package/src/reactivity/AtomHttpApi.ts +10 -16
- package/src/reactivity/AtomRegistry.ts +50 -29
- package/src/reactivity/AtomRpc.ts +6 -22
- package/src/reactivity/Hydration.ts +53 -12
- package/src/reactivity/Reactivity.ts +97 -39
- package/src/rpc/Rpc.ts +21 -0
- package/src/rpc/RpcClient.ts +283 -104
- package/src/rpc/RpcSerialization.ts +53 -14
- package/src/rpc/RpcServer.ts +27 -21
- package/src/rpc/RpcTest.ts +3 -0
- package/src/schema/VariantSchema.ts +86 -22
- package/src/socket/Socket.ts +45 -20
- package/src/sql/Migrator.ts +26 -11
- package/src/sql/SqlClient.ts +273 -29
- package/src/sql/SqlResolver.ts +32 -9
- package/src/sql/Statement.ts +65 -10
- package/src/testing/TestClock.ts +4 -1
- package/src/testing/TestSchema.ts +9 -3
- package/src/workflow/DurableDeferred.ts +23 -6
- package/src/workflow/WorkflowEngine.ts +34 -10
- package/dist/http/internal/preResponseHandler.d.ts +0 -2
- package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
- package/dist/http/internal/preResponseHandler.js +0 -14
- package/dist/http/internal/preResponseHandler.js.map +0 -1
- package/src/http/internal/preResponseHandler.ts +0 -19
|
@@ -1,41 +1,107 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { escapeToken, parseUriFragment } from "../../JsonPointer.ts"
|
|
2
2
|
import * as JsonSchema from "../../JsonSchema.ts"
|
|
3
|
-
import
|
|
4
|
-
import type * as Schema from "../../Schema.ts"
|
|
3
|
+
import * as Schema from "../../Schema.ts"
|
|
5
4
|
import * as InternalAST from "../../SchemaAST.ts"
|
|
6
5
|
import type * as SchemaRepresentation from "../../SchemaRepresentation.ts"
|
|
7
6
|
import { errorWithPath } from "../errors.ts"
|
|
7
|
+
import * as InternalJsonSchema from "../jsonSchema.ts"
|
|
8
8
|
import * as InternalRecord from "../record.ts"
|
|
9
|
-
import
|
|
9
|
+
import * as InternalAnnotations from "./annotations.ts"
|
|
10
|
+
import { ReferenceSlot } from "./fromRepresentation.ts"
|
|
10
11
|
|
|
11
12
|
type Path = ReadonlyArray<string | number>
|
|
12
|
-
type
|
|
13
|
-
type Check = SchemaRepresentation.Check
|
|
13
|
+
type Check = Filter | FilterGroup | PropertyNames
|
|
14
14
|
|
|
15
|
-
interface
|
|
16
|
-
readonly
|
|
15
|
+
interface Filter {
|
|
16
|
+
readonly _tag: "Filter"
|
|
17
|
+
readonly filter: InternalAST.Filter<any>
|
|
18
|
+
readonly annotations?: Schema.Annotations.Filter | undefined
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface PropertyNames {
|
|
22
|
+
readonly _tag: "PropertyNames"
|
|
23
|
+
readonly type: ImportedJsonSchemaRepresentation
|
|
24
|
+
readonly annotations?: Schema.Annotations.Filter | undefined
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
interface FilterGroup {
|
|
28
|
+
readonly _tag: "FilterGroup"
|
|
29
|
+
readonly checks: readonly [Check, ...Array<Check>]
|
|
17
30
|
readonly annotations?: Schema.Annotations.Annotations | undefined
|
|
18
31
|
}
|
|
19
32
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
interface ImportedAnnotations {
|
|
34
|
+
// Standard annotations may describe a value or a group of checks. Custom
|
|
35
|
+
// annotations always describe the value, even when its checks simplify away.
|
|
36
|
+
readonly annotations?: Schema.Annotations.Annotations | undefined
|
|
37
|
+
readonly customAnnotations?: Schema.Annotations.Annotations | undefined
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
interface Checked extends ImportedAnnotations {
|
|
41
|
+
readonly checks: ReadonlyArray<Check>
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
interface ImportedKeyword<Tag extends string> extends Checked {
|
|
45
|
+
readonly _tag: Tag
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
interface ImportedLiteral extends ImportedKeyword<"Literal"> {
|
|
49
|
+
readonly literal: string | number | boolean
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
interface ImportedElement {
|
|
53
|
+
readonly type: ImportedJsonSchemaRepresentation
|
|
54
|
+
readonly isOptional: boolean
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
interface ImportedArrays extends ImportedKeyword<"Arrays"> {
|
|
58
|
+
readonly elements: ReadonlyArray<ImportedElement>
|
|
59
|
+
readonly rest: ReadonlyArray<ImportedJsonSchemaRepresentation>
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
interface ImportedProperty extends ImportedElement {
|
|
63
|
+
readonly name: string
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
interface ImportedIndexSignature {
|
|
67
|
+
readonly parameter: ImportedJsonSchemaRepresentation
|
|
68
|
+
readonly type: ImportedJsonSchemaRepresentation
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
interface ImportedReference extends SchemaRepresentation.Reference, ImportedAnnotations {
|
|
72
|
+
readonly path: Path
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
interface ImportedObjects extends ImportedKeyword<"Objects"> {
|
|
76
|
+
readonly propertySignatures: ReadonlyArray<ImportedProperty>
|
|
77
|
+
readonly indexSignatures: ReadonlyArray<ImportedIndexSignature>
|
|
78
|
+
readonly scopes: ReadonlyArray<ImportedObjectScope>
|
|
79
|
+
readonly path: Path
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
interface ImportedUnion extends ImportedKeyword<"Union"> {
|
|
83
|
+
readonly types: ReadonlyArray<ImportedJsonSchemaRepresentation>
|
|
84
|
+
readonly options?: SchemaRepresentation.Union["options"]
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Import nodes keep source metadata and scopes until normalization is complete.
|
|
88
|
+
// Only finalize constructs runtime schemas after normalization.
|
|
89
|
+
type ImportedJsonSchemaRepresentation =
|
|
90
|
+
| ImportedKeyword<"Never">
|
|
91
|
+
| ImportedKeyword<"Unknown">
|
|
92
|
+
| ImportedKeyword<"Null">
|
|
93
|
+
| ImportedKeyword<"String">
|
|
94
|
+
| ImportedKeyword<"Number">
|
|
95
|
+
| ImportedKeyword<"Boolean">
|
|
96
|
+
| ImportedLiteral
|
|
97
|
+
| ImportedArrays
|
|
98
|
+
| ImportedObjects
|
|
99
|
+
| ImportedUnion
|
|
100
|
+
| ImportedReference
|
|
35
101
|
|
|
36
102
|
interface ImportedObjectPattern {
|
|
37
103
|
readonly source: string
|
|
38
|
-
readonly parameter:
|
|
104
|
+
readonly parameter: ImportedKeyword<"String">
|
|
39
105
|
readonly type: ImportedJsonSchemaRepresentation
|
|
40
106
|
}
|
|
41
107
|
|
|
@@ -54,6 +120,13 @@ interface ImportedObjectScope {
|
|
|
54
120
|
const never: ImportedJsonSchemaRepresentation = { _tag: "Never", checks: [] }
|
|
55
121
|
const unknown: ImportedJsonSchemaRepresentation = { _tag: "Unknown", checks: [] }
|
|
56
122
|
const string: ImportedJsonSchemaRepresentation = { _tag: "String", checks: [] }
|
|
123
|
+
const primitiveSchemas = {
|
|
124
|
+
Never: Schema.Never,
|
|
125
|
+
Null: Schema.Null,
|
|
126
|
+
String: Schema.String,
|
|
127
|
+
Number: Schema.Number,
|
|
128
|
+
Boolean: Schema.Boolean
|
|
129
|
+
}
|
|
57
130
|
const unsupportedStructuredValue = "Only primitive values are supported in \"const\" and \"enum\"."
|
|
58
131
|
const jsonSchemaPatternFlags = "u"
|
|
59
132
|
|
|
@@ -93,6 +166,47 @@ const jsonSchemaTypeSpecificKeys = [
|
|
|
93
166
|
"maxItems",
|
|
94
167
|
"uniqueItems"
|
|
95
168
|
]
|
|
169
|
+
|
|
170
|
+
const jsonSchemaAnnotationExcludedKeys = new Set([
|
|
171
|
+
...jsonSchemaTypeSpecificKeys,
|
|
172
|
+
...InternalAnnotations.jsonSchemaAnnotationKeys,
|
|
173
|
+
...InternalAnnotations.annotationExcludedKeys,
|
|
174
|
+
"$schema",
|
|
175
|
+
"$id",
|
|
176
|
+
"$ref",
|
|
177
|
+
"$defs",
|
|
178
|
+
"$anchor",
|
|
179
|
+
"$dynamicRef",
|
|
180
|
+
"$dynamicAnchor",
|
|
181
|
+
"$vocabulary",
|
|
182
|
+
"$comment",
|
|
183
|
+
"type",
|
|
184
|
+
"const",
|
|
185
|
+
"enum",
|
|
186
|
+
"allOf",
|
|
187
|
+
"anyOf",
|
|
188
|
+
"oneOf",
|
|
189
|
+
"not",
|
|
190
|
+
"if",
|
|
191
|
+
"then",
|
|
192
|
+
"else",
|
|
193
|
+
"contains",
|
|
194
|
+
"minContains",
|
|
195
|
+
"maxContains",
|
|
196
|
+
"dependentRequired",
|
|
197
|
+
"dependentSchemas",
|
|
198
|
+
"unevaluatedItems",
|
|
199
|
+
"unevaluatedProperties",
|
|
200
|
+
"definitions",
|
|
201
|
+
"dependencies",
|
|
202
|
+
"additionalItems",
|
|
203
|
+
"identifier",
|
|
204
|
+
"expected",
|
|
205
|
+
"message",
|
|
206
|
+
"messageMissingKey",
|
|
207
|
+
"messageUnexpectedKey"
|
|
208
|
+
])
|
|
209
|
+
|
|
96
210
|
function isImportedJsonSchemaType(input: unknown): input is JsonSchema.Type {
|
|
97
211
|
return input === "integer" || typeof input === "string" && jsonSchemaValueTypes.some((type) => type === input)
|
|
98
212
|
}
|
|
@@ -101,36 +215,24 @@ function hasTypeSpecificKeywords(schema: JsonSchema.JsonSchema): boolean {
|
|
|
101
215
|
return jsonSchemaTypeSpecificKeys.some((key) => schema[key] !== undefined)
|
|
102
216
|
}
|
|
103
217
|
|
|
104
|
-
function
|
|
105
|
-
|
|
106
|
-
payload: Schema.Json,
|
|
107
|
-
schemas?: ReadonlyArray<Representation>
|
|
108
|
-
): Check {
|
|
109
|
-
return {
|
|
110
|
-
_tag: "Filter",
|
|
111
|
-
aborted: false,
|
|
112
|
-
representation: {
|
|
113
|
-
id,
|
|
114
|
-
payload,
|
|
115
|
-
...(schemas === undefined ? undefined : { schemas })
|
|
116
|
-
}
|
|
117
|
-
}
|
|
218
|
+
function makeFilter(filter: InternalAST.Filter<any>): Filter {
|
|
219
|
+
return { _tag: "Filter", filter }
|
|
118
220
|
}
|
|
119
221
|
|
|
120
222
|
function addNumberCheck(
|
|
121
223
|
checks: Array<Check>,
|
|
122
224
|
value: unknown,
|
|
123
|
-
|
|
124
|
-
key: string
|
|
225
|
+
make: (value: number) => InternalAST.Filter<any>
|
|
125
226
|
): void {
|
|
126
227
|
if (typeof value === "number") {
|
|
127
|
-
checks.push(
|
|
228
|
+
checks.push(makeFilter(make(value)))
|
|
128
229
|
}
|
|
129
230
|
}
|
|
130
231
|
|
|
131
232
|
function jsonSchemaAnnotations(
|
|
132
|
-
schema: JsonSchema.JsonSchema
|
|
133
|
-
|
|
233
|
+
schema: JsonSchema.JsonSchema,
|
|
234
|
+
options: SchemaRepresentation.FromJsonSchemaOptions | undefined
|
|
235
|
+
): ImportedAnnotations {
|
|
134
236
|
const annotations: Record<string, Schema.Json> = {}
|
|
135
237
|
if (typeof schema.title === "string") annotations.title = schema.title
|
|
136
238
|
if (typeof schema.description === "string") annotations.description = schema.description
|
|
@@ -142,122 +244,129 @@ function jsonSchemaAnnotations(
|
|
|
142
244
|
if (typeof schema.contentEncoding === "string") annotations.contentEncoding = schema.contentEncoding
|
|
143
245
|
if (typeof schema.contentMediaType === "string") annotations.contentMediaType = schema.contentMediaType
|
|
144
246
|
if (InternalAST.isJson(schema.contentSchema)) annotations.contentSchema = schema.contentSchema
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
},
|
|
157
|
-
annotations: {
|
|
158
|
-
...annotations,
|
|
159
|
-
expected: "JSON value"
|
|
160
|
-
},
|
|
161
|
-
checks: [],
|
|
162
|
-
typeParameters: []
|
|
247
|
+
let customAnnotations: Schema.Annotations.Annotations | undefined
|
|
248
|
+
if (options?.includeAnnotationKey !== undefined) {
|
|
249
|
+
for (const key of Object.keys(schema)) {
|
|
250
|
+
if (
|
|
251
|
+
key.startsWith("~") ||
|
|
252
|
+
jsonSchemaAnnotationExcludedKeys.has(key) ||
|
|
253
|
+
!options.includeAnnotationKey(key)
|
|
254
|
+
) continue
|
|
255
|
+
const value = schema[key]
|
|
256
|
+
if (InternalAST.isJson(value)) InternalRecord.assignProperty(customAnnotations ??= {}, key, value)
|
|
257
|
+
}
|
|
163
258
|
}
|
|
259
|
+
return { annotations: Object.keys(annotations).length === 0 ? undefined : annotations, customAnnotations }
|
|
164
260
|
}
|
|
165
261
|
|
|
166
|
-
|
|
262
|
+
/** @internal */
|
|
263
|
+
export function fromJsonSchemaMultiDocument(
|
|
167
264
|
document: JsonSchema.MultiDocument<"draft-2020-12">,
|
|
168
265
|
options?: SchemaRepresentation.FromJsonSchemaOptions,
|
|
169
266
|
singleRoot = false
|
|
170
|
-
):
|
|
267
|
+
): readonly [Schema.Top, ...Array<Schema.Top>] {
|
|
171
268
|
const definitionCache = new Map<string, ImportedJsonSchemaRepresentation | null>()
|
|
172
|
-
const
|
|
173
|
-
const objectScopesByProperties = new WeakMap<
|
|
174
|
-
SchemaRepresentation.Objects["propertySignatures"],
|
|
175
|
-
readonly [ReadonlyArray<ImportedObjectScope>, Path]
|
|
176
|
-
>()
|
|
177
|
-
const annotatedReferences: Array<{
|
|
178
|
-
readonly reference: SchemaRepresentation.Reference
|
|
179
|
-
readonly path: Path
|
|
180
|
-
}> = []
|
|
269
|
+
const validatedAliases = new Set<string>()
|
|
181
270
|
const resolvingChoices = new Set<string>()
|
|
182
|
-
const
|
|
271
|
+
const references = new Map<string, ReferenceSlot>()
|
|
183
272
|
let inNestedResource = false
|
|
184
273
|
|
|
185
|
-
function finalize(
|
|
186
|
-
|
|
274
|
+
function finalize(input: ImportedJsonSchemaRepresentation): Schema.Top {
|
|
275
|
+
const annotations = mergeAnnotations(input.annotations, input.customAnnotations)
|
|
276
|
+
if (input._tag === "Reference") {
|
|
277
|
+
if (annotations !== undefined) resolveReference(input, input.path)
|
|
278
|
+
let slot = references.get(input.$ref)
|
|
279
|
+
if (slot === undefined) {
|
|
280
|
+
slot = new ReferenceSlot(input.$ref)
|
|
281
|
+
references.set(input.$ref, slot)
|
|
282
|
+
slot.body = finalize(translateDefinition(input.$ref, input.path)).annotate({ identifier: input.$ref })
|
|
283
|
+
}
|
|
284
|
+
return annotations === undefined ? slot.body ?? slot.wrapper : slot.wrapper.annotate(annotations)
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
let schema: Schema.Top
|
|
288
|
+
switch (input._tag) {
|
|
187
289
|
case "Unknown":
|
|
188
|
-
return
|
|
189
|
-
case "
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
case "
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
290
|
+
return Schema.Json.annotate({ ...annotations, expected: "JSON value" })
|
|
291
|
+
case "Never":
|
|
292
|
+
case "Null":
|
|
293
|
+
case "String":
|
|
294
|
+
case "Number":
|
|
295
|
+
case "Boolean":
|
|
296
|
+
schema = primitiveSchemas[input._tag]
|
|
297
|
+
break
|
|
298
|
+
case "Literal":
|
|
299
|
+
schema = Schema.Literal(input.literal)
|
|
300
|
+
break
|
|
301
|
+
case "Arrays": {
|
|
302
|
+
const elements = input.elements.map((element) => {
|
|
303
|
+
const type = finalize(element.type)
|
|
304
|
+
return element.isOptional ? Schema.optionalKey(type) : type
|
|
305
|
+
})
|
|
306
|
+
const rest = input.rest[0] === undefined ? undefined : finalize(input.rest[0])
|
|
307
|
+
schema = rest !== undefined
|
|
308
|
+
? elements.length === 0
|
|
309
|
+
? Schema.Array(rest)
|
|
310
|
+
: Schema.TupleWithRest(Schema.Tuple(elements), [rest])
|
|
311
|
+
: Schema.Tuple(elements)
|
|
312
|
+
break
|
|
313
|
+
}
|
|
314
|
+
case "Objects": {
|
|
315
|
+
// Intersections may remove open patterns, so check the normalized object.
|
|
207
316
|
if (
|
|
208
|
-
|
|
209
|
-
scopes.some((scope) => scope.patterns.length > 0)
|
|
317
|
+
input.indexSignatures[0]?.parameter === string &&
|
|
318
|
+
input.scopes.some((scope) => scope.patterns.length > 0)
|
|
210
319
|
) {
|
|
211
320
|
throw errorWithPath(
|
|
212
321
|
"Cannot import open \"patternProperties\": unmatched keys cannot be typed correctly.",
|
|
213
|
-
path
|
|
322
|
+
input.path
|
|
214
323
|
)
|
|
215
324
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
type: finalize(property.type)
|
|
221
|
-
})),
|
|
222
|
-
indexSignatures: representation.indexSignatures.map((indexSignature) => ({
|
|
223
|
-
parameter: finalize(indexSignature.parameter),
|
|
224
|
-
type: finalize(indexSignature.type)
|
|
225
|
-
})),
|
|
226
|
-
checks: representation.checks.map(finalizeCheck)
|
|
325
|
+
const fields: Record<string, Schema.Top> = {}
|
|
326
|
+
for (const property of input.propertySignatures) {
|
|
327
|
+
const type = finalize(property.type)
|
|
328
|
+
InternalRecord.assignProperty(fields, property.name, property.isOptional ? Schema.optionalKey(type) : type)
|
|
227
329
|
}
|
|
330
|
+
const index = input.indexSignatures[0]
|
|
331
|
+
const record = index === undefined
|
|
332
|
+
? undefined
|
|
333
|
+
: Schema.Record(finalize(index.parameter) as Schema.Record.Key, finalize(index.type))
|
|
334
|
+
schema = record !== undefined
|
|
335
|
+
? input.propertySignatures.length === 0
|
|
336
|
+
? record
|
|
337
|
+
: Schema.StructWithRest(Schema.Struct(fields), [record])
|
|
338
|
+
: Schema.Struct(fields)
|
|
339
|
+
break
|
|
340
|
+
}
|
|
228
341
|
case "Union":
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
return representation
|
|
342
|
+
schema = Schema.Union(input.types.map(finalize), input.options)
|
|
343
|
+
break
|
|
232
344
|
}
|
|
345
|
+
if (annotations !== undefined) schema = schema.annotate(annotations)
|
|
346
|
+
const checks = input.checks.map(finalizeCheck)
|
|
347
|
+
return checks.length > 0 ? schema.check(...checks as [InternalAST.Check<any>]) : schema
|
|
233
348
|
}
|
|
234
349
|
|
|
235
|
-
function finalizeCheck(check: Check): Check {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
return {
|
|
242
|
-
...check,
|
|
243
|
-
representation: {
|
|
244
|
-
...representation,
|
|
245
|
-
schemas: schemas.map(finalize)
|
|
246
|
-
}
|
|
350
|
+
function finalizeCheck(check: Check): InternalAST.Check<any> {
|
|
351
|
+
if (check._tag === "FilterGroup") {
|
|
352
|
+
return Schema.makeFilterGroup(
|
|
353
|
+
check.checks.map(finalizeCheck) as [InternalAST.Check<any>, ...Array<InternalAST.Check<any>>],
|
|
354
|
+
check.annotations
|
|
355
|
+
)
|
|
247
356
|
}
|
|
357
|
+
const filter = check._tag === "PropertyNames" ? Schema.isPropertyNames(finalize(check.type)) : check.filter
|
|
358
|
+
return check.annotations === undefined ? filter : filter.annotate(check.annotations)
|
|
248
359
|
}
|
|
249
360
|
|
|
250
361
|
function annotate(
|
|
251
362
|
representation: ImportedJsonSchemaRepresentation,
|
|
252
|
-
|
|
363
|
+
source: ImportedAnnotations
|
|
253
364
|
): ImportedJsonSchemaRepresentation {
|
|
254
|
-
if (annotations === undefined) return representation
|
|
255
|
-
if (representation._tag === "Reference") {
|
|
256
|
-
return { _tag: "Suspend", annotations, checks: [], thunk: representation }
|
|
257
|
-
}
|
|
365
|
+
if (source.annotations === undefined && source.customAnnotations === undefined) return representation
|
|
258
366
|
return {
|
|
259
367
|
...representation,
|
|
260
|
-
annotations:
|
|
368
|
+
annotations: mergeAnnotations(representation.annotations, source.annotations),
|
|
369
|
+
customAnnotations: mergeAnnotations(representation.customAnnotations, source.customAnnotations)
|
|
261
370
|
}
|
|
262
371
|
}
|
|
263
372
|
|
|
@@ -278,13 +387,52 @@ function translateJsonSchemaMultiDocument(
|
|
|
278
387
|
return cached
|
|
279
388
|
}
|
|
280
389
|
definitionCache.set(key, null)
|
|
281
|
-
const
|
|
390
|
+
const pointer = pointers.get(key)
|
|
391
|
+
const wasInNestedResource = inNestedResource
|
|
392
|
+
if (pointer !== undefined) inNestedResource = pointer.crossesResource
|
|
393
|
+
const representation = pointer === undefined
|
|
394
|
+
? translateSchema(document.definitions[key], ["definitions", key])
|
|
395
|
+
: translateSchema(pointer.target, ["definitions", ...pointer.tokens])
|
|
396
|
+
inNestedResource = wasInNestedResource
|
|
282
397
|
definitionCache.set(key, representation)
|
|
398
|
+
if (pointer !== undefined) {
|
|
399
|
+
validatePointerAliases(representation, path, recursiveReferenceError)
|
|
400
|
+
}
|
|
283
401
|
return representation
|
|
284
402
|
}
|
|
285
403
|
|
|
404
|
+
function validatePointerAliases(
|
|
405
|
+
representation: ImportedJsonSchemaRepresentation,
|
|
406
|
+
path: Path,
|
|
407
|
+
recursiveReferenceError?: string,
|
|
408
|
+
visiting: Set<string> = new Set()
|
|
409
|
+
): void {
|
|
410
|
+
if (representation._tag === "Reference") {
|
|
411
|
+
const key = representation.$ref
|
|
412
|
+
if (validatedAliases.has(key)) return
|
|
413
|
+
if (visiting.has(key)) {
|
|
414
|
+
throw errorWithPath(`Definition ${JSON.stringify(key)} is a circular alias.`, [...path, "$ref"])
|
|
415
|
+
}
|
|
416
|
+
visiting.add(key)
|
|
417
|
+
validatePointerAliases(
|
|
418
|
+
translateDefinition(key, path, recursiveReferenceError),
|
|
419
|
+
path,
|
|
420
|
+
recursiveReferenceError,
|
|
421
|
+
visiting
|
|
422
|
+
)
|
|
423
|
+
visiting.delete(key)
|
|
424
|
+
validatedAliases.add(key)
|
|
425
|
+
} else if (representation._tag === "Union") {
|
|
426
|
+
// Alternatives share completed checks, but only ancestors belong to the active path.
|
|
427
|
+
for (const type of representation.types) {
|
|
428
|
+
validatePointerAliases(type, path, recursiveReferenceError, visiting)
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
// Recursion through object properties or array items consumes a child value.
|
|
432
|
+
}
|
|
433
|
+
|
|
286
434
|
function resolveReference(
|
|
287
|
-
reference:
|
|
435
|
+
reference: ImportedReference,
|
|
288
436
|
path: Path,
|
|
289
437
|
recursiveReferenceError?: string,
|
|
290
438
|
seen: Set<string> = new Set()
|
|
@@ -298,17 +446,67 @@ function translateJsonSchemaMultiDocument(
|
|
|
298
446
|
seen.add(reference.$ref)
|
|
299
447
|
const representation = translateDefinition(reference.$ref, path, recursiveReferenceError)
|
|
300
448
|
if (representation._tag === "Reference") {
|
|
301
|
-
return resolveReference(representation, path, recursiveReferenceError, seen)
|
|
302
|
-
}
|
|
303
|
-
if (representation._tag === "Suspend" && representation.thunk._tag === "Reference") {
|
|
304
449
|
return annotate(
|
|
305
|
-
resolveReference(representation
|
|
306
|
-
representation
|
|
450
|
+
resolveReference(representation, path, recursiveReferenceError, seen),
|
|
451
|
+
representation
|
|
307
452
|
)
|
|
308
453
|
}
|
|
309
454
|
return representation
|
|
310
455
|
}
|
|
311
456
|
|
|
457
|
+
// Pointers below a definition are registered as definitions keyed by their escaped tokens, e.g. "O/properties/v"
|
|
458
|
+
const pointers = new Map<
|
|
459
|
+
string,
|
|
460
|
+
{ readonly target: unknown; readonly tokens: ReadonlyArray<string>; readonly crossesResource: boolean }
|
|
461
|
+
>()
|
|
462
|
+
|
|
463
|
+
function resolvePointer($ref: string, path: Path): string {
|
|
464
|
+
const pointer = $ref.startsWith("#") ? parseUriFragment($ref) : undefined
|
|
465
|
+
if (pointer === undefined || pointer.length < 3 || pointer[0] !== "$defs") {
|
|
466
|
+
throw errorWithPath(`Unsupported $ref ${JSON.stringify($ref)}. Use "#/$defs/Name".`, [...path, "$ref"])
|
|
467
|
+
}
|
|
468
|
+
const tokens = pointer.slice(1)
|
|
469
|
+
const key = tokens.map(escapeToken).join("/")
|
|
470
|
+
if (Object.hasOwn(document.definitions, key)) {
|
|
471
|
+
throw errorWithPath(
|
|
472
|
+
`Pointer $ref ${JSON.stringify($ref)} conflicts with definition ${JSON.stringify(key)}.`,
|
|
473
|
+
[...path, "$ref"]
|
|
474
|
+
)
|
|
475
|
+
}
|
|
476
|
+
if (pointers.has(key)) return key
|
|
477
|
+
// Walk through the onEnter result of each ancestor schema, as translateSchema would see it
|
|
478
|
+
let node: unknown = document.definitions
|
|
479
|
+
let position: "schema" | "container" | "value" = "container"
|
|
480
|
+
let crossesResource = false
|
|
481
|
+
for (const token of tokens) {
|
|
482
|
+
if (position === "container") {
|
|
483
|
+
position = "schema"
|
|
484
|
+
} else if (position === "schema" && isObject(node)) {
|
|
485
|
+
if (options?.onEnter !== undefined) node = options.onEnter(node as JsonSchema.JsonSchema)
|
|
486
|
+
crossesResource ||= isObject(node) && typeof node.$id === "string"
|
|
487
|
+
const kind = InternalJsonSchema.getSubschemaKind(token)
|
|
488
|
+
position = kind === "schema"
|
|
489
|
+
? "schema"
|
|
490
|
+
: kind === undefined
|
|
491
|
+
? "value"
|
|
492
|
+
: "container"
|
|
493
|
+
} else {
|
|
494
|
+
position = "value"
|
|
495
|
+
}
|
|
496
|
+
node = typeof node === "object" && node !== null && Object.hasOwn(node, token)
|
|
497
|
+
? (node as Record<string, unknown>)[token]
|
|
498
|
+
: undefined
|
|
499
|
+
}
|
|
500
|
+
if (!isObject(node) && typeof node !== "boolean") {
|
|
501
|
+
throw errorWithPath(
|
|
502
|
+
`Unresolvable $ref ${JSON.stringify($ref)}. Nothing exists at that location.`,
|
|
503
|
+
[...path, "$ref"]
|
|
504
|
+
)
|
|
505
|
+
}
|
|
506
|
+
pointers.set(key, { target: node, tokens, crossesResource })
|
|
507
|
+
return key
|
|
508
|
+
}
|
|
509
|
+
|
|
312
510
|
function mergeAnnotations(
|
|
313
511
|
left: Schema.Annotations.Annotations | undefined,
|
|
314
512
|
right: Schema.Annotations.Annotations | undefined
|
|
@@ -320,34 +518,27 @@ function translateJsonSchemaMultiDocument(
|
|
|
320
518
|
|
|
321
519
|
function annotateIntersection(
|
|
322
520
|
representation: ImportedJsonSchemaRepresentation,
|
|
323
|
-
left:
|
|
324
|
-
right:
|
|
521
|
+
left: ImportedAnnotations,
|
|
522
|
+
right: ImportedAnnotations
|
|
325
523
|
): ImportedJsonSchemaRepresentation {
|
|
326
|
-
return annotate(
|
|
327
|
-
representation,
|
|
328
|
-
mergeAnnotations(
|
|
329
|
-
left._tag === "Reference" ? undefined : left.annotations,
|
|
330
|
-
right._tag === "Reference" ? undefined : right.annotations
|
|
331
|
-
)
|
|
332
|
-
)
|
|
524
|
+
return annotate(annotate(representation, left), right)
|
|
333
525
|
}
|
|
334
526
|
|
|
335
527
|
function intersectChecks(
|
|
336
528
|
left: Checked,
|
|
337
529
|
right: Checked,
|
|
338
530
|
deduplicate: ReadonlyArray<string> = []
|
|
339
|
-
):
|
|
531
|
+
): Checked {
|
|
340
532
|
let checks = right.checks
|
|
341
533
|
for (const id of deduplicate) {
|
|
342
|
-
if (left.checks.some((check) => check._tag === "Filter" && check.representation?.id === id)) {
|
|
343
|
-
checks = checks.filter((check) =>
|
|
534
|
+
if (left.checks.some((check) => check._tag === "Filter" && check.filter.annotations?.representation?.id === id)) {
|
|
535
|
+
checks = checks.filter((check) =>
|
|
536
|
+
check._tag !== "Filter" || check.filter.annotations?.representation?.id !== id
|
|
537
|
+
)
|
|
344
538
|
}
|
|
345
539
|
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
return [left.checks, annotations]
|
|
349
|
-
}
|
|
350
|
-
if (right.annotations !== undefined) {
|
|
540
|
+
const annotations = checks.length === 0 ? mergeAnnotations(left.annotations, right.annotations) : left.annotations
|
|
541
|
+
if (checks.length > 0 && right.annotations !== undefined) {
|
|
351
542
|
checks = checks.length === 1 && checks[0].annotations === undefined
|
|
352
543
|
? [{ ...checks[0], annotations: right.annotations }]
|
|
353
544
|
: [{
|
|
@@ -356,46 +547,23 @@ function translateJsonSchemaMultiDocument(
|
|
|
356
547
|
annotations: right.annotations
|
|
357
548
|
}]
|
|
358
549
|
}
|
|
359
|
-
return
|
|
550
|
+
return {
|
|
551
|
+
checks: [...left.checks, ...checks],
|
|
552
|
+
annotations,
|
|
553
|
+
customAnnotations: mergeAnnotations(left.customAnnotations, right.customAnnotations)
|
|
554
|
+
}
|
|
360
555
|
}
|
|
361
556
|
|
|
362
|
-
function satisfiesPrimitiveCheck(check: Check, value: string | number): boolean
|
|
557
|
+
function satisfiesPrimitiveCheck(check: Check, value: string | number): boolean {
|
|
363
558
|
if (check._tag === "FilterGroup") {
|
|
364
559
|
return check.checks.every((check) => satisfiesPrimitiveCheck(check, value))
|
|
365
560
|
}
|
|
366
|
-
|
|
367
|
-
const payload = representation.payload as Record<string, any>
|
|
368
|
-
switch (representation.id) {
|
|
369
|
-
case "effect/schema/isMinLength":
|
|
370
|
-
return (value as string).length >= payload.minLength
|
|
371
|
-
case "effect/schema/isMinCodePoints":
|
|
372
|
-
return Iterable.size(value as string) >= payload.minCodePoints
|
|
373
|
-
case "effect/schema/isMaxCodePoints":
|
|
374
|
-
return Iterable.size(value as string) <= payload.maxCodePoints
|
|
375
|
-
case "effect/schema/isPattern":
|
|
376
|
-
return new RegExp(payload.source as string, payload.flags as string).test(value as string)
|
|
377
|
-
case "effect/schema/isFinite":
|
|
378
|
-
return globalThis.Number.isFinite(value as number)
|
|
379
|
-
case "effect/schema/isInt":
|
|
380
|
-
return globalThis.Number.isSafeInteger(value as number)
|
|
381
|
-
case "effect/schema/isMultipleOf":
|
|
382
|
-
return remainder(value as number, payload.divisor) === 0
|
|
383
|
-
case "effect/schema/isGreaterThan":
|
|
384
|
-
return (value as number) > payload.exclusiveMinimum
|
|
385
|
-
case "effect/schema/isGreaterThanOrEqualTo":
|
|
386
|
-
return (value as number) >= payload.minimum
|
|
387
|
-
case "effect/schema/isLessThan":
|
|
388
|
-
return (value as number) < payload.exclusiveMaximum
|
|
389
|
-
case "effect/schema/isLessThanOrEqualTo":
|
|
390
|
-
return (value as number) <= payload.maximum
|
|
391
|
-
}
|
|
561
|
+
return check._tag === "Filter" && check.filter.run(value, Schema.Unknown.ast, {}) === undefined
|
|
392
562
|
}
|
|
393
563
|
|
|
394
564
|
function satisfiesLiteral(
|
|
395
|
-
representation:
|
|
396
|
-
|
|
397
|
-
| SchemaRepresentation.Number,
|
|
398
|
-
literal: SchemaRepresentation.Literal
|
|
565
|
+
representation: ImportedKeyword<"String"> | ImportedKeyword<"Number">,
|
|
566
|
+
literal: ImportedLiteral
|
|
399
567
|
): boolean {
|
|
400
568
|
const value = literal.literal
|
|
401
569
|
if (representation._tag === "String" ? typeof value !== "string" : typeof value !== "number") {
|
|
@@ -405,11 +573,8 @@ function translateJsonSchemaMultiDocument(
|
|
|
405
573
|
}
|
|
406
574
|
|
|
407
575
|
function intersectPrimitiveWithLiteral(
|
|
408
|
-
primitive:
|
|
409
|
-
|
|
410
|
-
| SchemaRepresentation.Number
|
|
411
|
-
| SchemaRepresentation.Boolean,
|
|
412
|
-
literal: SchemaRepresentation.Literal
|
|
576
|
+
primitive: ImportedKeyword<"String"> | ImportedKeyword<"Number"> | ImportedKeyword<"Boolean">,
|
|
577
|
+
literal: ImportedLiteral
|
|
413
578
|
): ImportedJsonSchemaRepresentation {
|
|
414
579
|
const satisfies = primitive._tag === "Boolean"
|
|
415
580
|
? typeof literal.literal === "boolean"
|
|
@@ -418,11 +583,11 @@ function translateJsonSchemaMultiDocument(
|
|
|
418
583
|
}
|
|
419
584
|
|
|
420
585
|
function intersectArrays(
|
|
421
|
-
left:
|
|
422
|
-
right:
|
|
586
|
+
left: ImportedArrays,
|
|
587
|
+
right: ImportedArrays,
|
|
423
588
|
path: Path
|
|
424
|
-
): Pick<
|
|
425
|
-
const elements: Array<
|
|
589
|
+
): Pick<ImportedArrays, "elements" | "rest"> | undefined {
|
|
590
|
+
const elements: Array<ImportedElement> = []
|
|
426
591
|
const length = Math.max(left.elements.length, right.elements.length)
|
|
427
592
|
for (let index = 0; index < length; index++) {
|
|
428
593
|
const leftElement = left.elements[index]
|
|
@@ -434,8 +599,8 @@ function translateJsonSchemaMultiDocument(
|
|
|
434
599
|
return isOptional ? { elements, rest: [] } : undefined
|
|
435
600
|
}
|
|
436
601
|
const type = intersect(
|
|
437
|
-
leftType
|
|
438
|
-
rightType
|
|
602
|
+
leftType,
|
|
603
|
+
rightType,
|
|
439
604
|
[...path, "elements", index, "type"]
|
|
440
605
|
)
|
|
441
606
|
if (type._tag === "Never") {
|
|
@@ -453,8 +618,8 @@ function translateJsonSchemaMultiDocument(
|
|
|
453
618
|
return { elements, rest: [] }
|
|
454
619
|
}
|
|
455
620
|
const rest = intersect(
|
|
456
|
-
leftRest
|
|
457
|
-
rightRest
|
|
621
|
+
leftRest,
|
|
622
|
+
rightRest,
|
|
458
623
|
[...path, "rest", 0]
|
|
459
624
|
)
|
|
460
625
|
return { elements, rest: rest._tag === "Never" ? [] : [rest] }
|
|
@@ -473,8 +638,7 @@ function translateJsonSchemaMultiDocument(
|
|
|
473
638
|
|
|
474
639
|
function lowerObject(
|
|
475
640
|
scopes: ReadonlyArray<ImportedObjectScope>,
|
|
476
|
-
|
|
477
|
-
annotations: Schema.Annotations.Annotations | undefined,
|
|
641
|
+
checked: Checked,
|
|
478
642
|
path: Path
|
|
479
643
|
): ImportedJsonSchemaRepresentation {
|
|
480
644
|
const names = new Set<string>()
|
|
@@ -499,7 +663,7 @@ function translateJsonSchemaMultiDocument(
|
|
|
499
663
|
)
|
|
500
664
|
}
|
|
501
665
|
|
|
502
|
-
const properties: Array<
|
|
666
|
+
const properties: Array<ImportedProperty> = []
|
|
503
667
|
for (const name of names) {
|
|
504
668
|
let isOptional = true
|
|
505
669
|
const types: Array<ImportedJsonSchemaRepresentation> = []
|
|
@@ -520,10 +684,10 @@ function translateJsonSchemaMultiDocument(
|
|
|
520
684
|
}
|
|
521
685
|
const type = intersectAll(types, [...path, "properties", name])
|
|
522
686
|
if (!isOptional && type._tag === "Never") return never
|
|
523
|
-
properties.push({ name, type, isOptional
|
|
687
|
+
properties.push({ name, type, isOptional })
|
|
524
688
|
}
|
|
525
689
|
|
|
526
|
-
const indexSignatures: ReadonlyArray<
|
|
690
|
+
const indexSignatures: ReadonlyArray<ImportedIndexSignature> = closedPattern !== undefined
|
|
527
691
|
? [{ parameter: closedPattern.parameter, type: closedPattern.type }]
|
|
528
692
|
: !hasFiniteKeyDomain
|
|
529
693
|
? [{
|
|
@@ -536,15 +700,14 @@ function translateJsonSchemaMultiDocument(
|
|
|
536
700
|
: properties.length === 0
|
|
537
701
|
? [{ parameter: string, type: never }]
|
|
538
702
|
: []
|
|
539
|
-
|
|
703
|
+
return {
|
|
540
704
|
_tag: "Objects",
|
|
541
705
|
propertySignatures: properties,
|
|
542
706
|
indexSignatures,
|
|
543
|
-
|
|
544
|
-
|
|
707
|
+
scopes,
|
|
708
|
+
path,
|
|
709
|
+
...checked
|
|
545
710
|
}
|
|
546
|
-
objectScopesByProperties.set(properties, [scopes, path])
|
|
547
|
-
return representation
|
|
548
711
|
}
|
|
549
712
|
|
|
550
713
|
const jsonRootTags = ["Null", "String", "Number", "Boolean", "Objects", "Arrays"] as const
|
|
@@ -568,12 +731,10 @@ function translateJsonSchemaMultiDocument(
|
|
|
568
731
|
default:
|
|
569
732
|
return 0
|
|
570
733
|
}
|
|
571
|
-
case "Suspend":
|
|
572
|
-
return rootMask(representation.thunk as ImportedJsonSchemaRepresentation)
|
|
573
734
|
case "Union": {
|
|
574
735
|
let out = 0
|
|
575
736
|
for (const type of representation.types) {
|
|
576
|
-
out |= rootMask(type
|
|
737
|
+
out |= rootMask(type)
|
|
577
738
|
}
|
|
578
739
|
return out
|
|
579
740
|
}
|
|
@@ -589,30 +750,23 @@ function translateJsonSchemaMultiDocument(
|
|
|
589
750
|
const cached = definitionCache.get(key)
|
|
590
751
|
if (cached === null || resolvingChoices.has(key)) return true
|
|
591
752
|
resolvingChoices.add(key)
|
|
592
|
-
const out = hasChoices(cached ?? translateDefinition(key,
|
|
753
|
+
const out = hasChoices(cached ?? translateDefinition(key, representation.path))
|
|
593
754
|
resolvingChoices.delete(key)
|
|
594
755
|
return out
|
|
595
756
|
}
|
|
596
|
-
case "Suspend":
|
|
597
|
-
return hasChoices(representation.thunk as ImportedJsonSchemaRepresentation)
|
|
598
757
|
case "Union":
|
|
599
758
|
return representation.types.length > 1 ||
|
|
600
|
-
representation.types.some(
|
|
759
|
+
representation.types.some(hasChoices)
|
|
601
760
|
case "Arrays":
|
|
602
|
-
return representation.elements.some((element) =>
|
|
603
|
-
hasChoices
|
|
604
|
-
) || representation.rest.some((type) => hasChoices(type as ImportedJsonSchemaRepresentation))
|
|
761
|
+
return representation.elements.some((element) => hasChoices(element.type)) ||
|
|
762
|
+
representation.rest.some(hasChoices)
|
|
605
763
|
case "Objects":
|
|
606
|
-
return representation.propertySignatures.some((property) =>
|
|
607
|
-
hasChoices(property.type as ImportedJsonSchemaRepresentation)
|
|
608
|
-
) ||
|
|
764
|
+
return representation.propertySignatures.some((property) => hasChoices(property.type)) ||
|
|
609
765
|
representation.indexSignatures.some((indexSignature) =>
|
|
610
|
-
hasChoices(indexSignature.parameter
|
|
611
|
-
hasChoices(indexSignature.type
|
|
612
|
-
) ||
|
|
613
|
-
objectScopesByProperties.get(representation.propertySignatures)![0].some((scope) =>
|
|
614
|
-
scope.patterns.some((pattern) => hasChoices(pattern.type))
|
|
766
|
+
hasChoices(indexSignature.parameter) ||
|
|
767
|
+
hasChoices(indexSignature.type)
|
|
615
768
|
) ||
|
|
769
|
+
representation.scopes.some((scope) => scope.patterns.some((pattern) => hasChoices(pattern.type))) ||
|
|
616
770
|
representation.checks.some(checkHasChoices)
|
|
617
771
|
default:
|
|
618
772
|
return false
|
|
@@ -622,15 +776,15 @@ function translateJsonSchemaMultiDocument(
|
|
|
622
776
|
function checkHasChoices(check: Check): boolean {
|
|
623
777
|
return check._tag === "FilterGroup"
|
|
624
778
|
? check.checks.some(checkHasChoices)
|
|
625
|
-
: check.
|
|
779
|
+
: check._tag === "PropertyNames" && hasChoices(check.type)
|
|
626
780
|
}
|
|
627
781
|
|
|
628
782
|
function makeUnion(
|
|
629
|
-
source:
|
|
783
|
+
source: ImportedUnion,
|
|
630
784
|
types: ReadonlyArray<ImportedJsonSchemaRepresentation>
|
|
631
785
|
): ImportedJsonSchemaRepresentation {
|
|
632
786
|
if (types.length === 0) return never
|
|
633
|
-
if (types.length === 1 && source.checks.length === 0) return annotate(types[0], source
|
|
787
|
+
if (types.length === 1 && source.checks.length === 0) return annotate(types[0], source)
|
|
634
788
|
return { ...source, types }
|
|
635
789
|
}
|
|
636
790
|
|
|
@@ -639,40 +793,39 @@ function translateJsonSchemaMultiDocument(
|
|
|
639
793
|
): string | number | boolean | null | undefined {
|
|
640
794
|
if (representation._tag === "Null") return null
|
|
641
795
|
if (representation._tag !== "Literal") return undefined
|
|
642
|
-
|
|
643
|
-
return typeof literal === "string" || typeof literal === "number" || typeof literal === "boolean"
|
|
644
|
-
? literal
|
|
645
|
-
: undefined
|
|
796
|
+
return representation.literal
|
|
646
797
|
}
|
|
647
798
|
|
|
648
799
|
function intersectLiteralUnions(
|
|
649
|
-
left:
|
|
650
|
-
right:
|
|
800
|
+
left: ImportedUnion,
|
|
801
|
+
right: ImportedUnion,
|
|
651
802
|
path: Path
|
|
652
803
|
): ImportedJsonSchemaRepresentation | undefined {
|
|
653
804
|
if ((left.options?.mode ?? "anyOf") !== "anyOf" || (right.options?.mode ?? "anyOf") !== "anyOf") {
|
|
654
805
|
return undefined
|
|
655
806
|
}
|
|
656
807
|
const rightByValue = new Map<string | number | boolean | null, ImportedJsonSchemaRepresentation>()
|
|
657
|
-
for (const
|
|
658
|
-
const representation = type as ImportedJsonSchemaRepresentation
|
|
808
|
+
for (const representation of right.types) {
|
|
659
809
|
const value = literalValue(representation)
|
|
660
810
|
if (value === undefined) return undefined
|
|
661
|
-
rightByValue.
|
|
811
|
+
const previous = rightByValue.get(value)
|
|
812
|
+
rightByValue.set(value, {
|
|
813
|
+
...representation,
|
|
814
|
+
customAnnotations: mergeAnnotations(previous?.customAnnotations, representation.customAnnotations)
|
|
815
|
+
})
|
|
662
816
|
}
|
|
663
817
|
const types: Array<ImportedJsonSchemaRepresentation> = []
|
|
664
|
-
for (const
|
|
665
|
-
const representation = type as ImportedJsonSchemaRepresentation
|
|
818
|
+
for (const representation of left.types) {
|
|
666
819
|
const value = literalValue(representation)
|
|
667
820
|
if (value === undefined) return undefined
|
|
668
821
|
const match = rightByValue.get(value)
|
|
669
|
-
if (match !== undefined) types.push(intersect(representation, annotate(match, right
|
|
822
|
+
if (match !== undefined) types.push(intersect(representation, annotate(match, right), path))
|
|
670
823
|
}
|
|
671
824
|
return makeUnion(left, types)
|
|
672
825
|
}
|
|
673
826
|
|
|
674
827
|
function intersectUnionWithType(
|
|
675
|
-
union:
|
|
828
|
+
union: ImportedUnion,
|
|
676
829
|
type: ImportedJsonSchemaRepresentation,
|
|
677
830
|
path: Path,
|
|
678
831
|
unionOnLeft: boolean
|
|
@@ -681,14 +834,14 @@ function translateJsonSchemaMultiDocument(
|
|
|
681
834
|
const members = union.types
|
|
682
835
|
.map((member, index) => ({
|
|
683
836
|
index,
|
|
684
|
-
type: member
|
|
837
|
+
type: member
|
|
685
838
|
}))
|
|
686
839
|
.filter((member) => (rootMask(member.type) & mask) !== 0)
|
|
687
840
|
if (members.length > 1 && hasChoices(type)) {
|
|
688
841
|
return unsupportedIntersection(path)
|
|
689
842
|
}
|
|
690
843
|
if (members.length === 1 && union.checks.length === 0) {
|
|
691
|
-
const member = annotate(members[0].type, union
|
|
844
|
+
const member = annotate(members[0].type, union)
|
|
692
845
|
return unionOnLeft
|
|
693
846
|
? intersect(member, type, [...path, "types", members[0].index])
|
|
694
847
|
: intersect(type, member, [...path, "types", members[0].index])
|
|
@@ -705,10 +858,10 @@ function translateJsonSchemaMultiDocument(
|
|
|
705
858
|
)
|
|
706
859
|
}
|
|
707
860
|
|
|
708
|
-
function isTypePartition(union:
|
|
861
|
+
function isTypePartition(union: ImportedUnion): boolean {
|
|
709
862
|
let mask = 0
|
|
710
863
|
for (const type of union.types) {
|
|
711
|
-
const memberMask = rootMask(type
|
|
864
|
+
const memberMask = rootMask(type)
|
|
712
865
|
if ((mask & memberMask) !== 0) return false
|
|
713
866
|
mask |= memberMask
|
|
714
867
|
}
|
|
@@ -723,13 +876,13 @@ function translateJsonSchemaMultiDocument(
|
|
|
723
876
|
}
|
|
724
877
|
|
|
725
878
|
function intersectPartition(
|
|
726
|
-
partition:
|
|
727
|
-
other:
|
|
879
|
+
partition: ImportedUnion,
|
|
880
|
+
other: ImportedUnion,
|
|
728
881
|
path: Path,
|
|
729
882
|
partitionOnLeft: boolean
|
|
730
883
|
): ImportedJsonSchemaRepresentation {
|
|
731
|
-
const partitionTypes = partition.types
|
|
732
|
-
const otherTypes = other.types
|
|
884
|
+
const partitionTypes = partition.types
|
|
885
|
+
const otherTypes = other.types
|
|
733
886
|
for (const type of otherTypes) {
|
|
734
887
|
const mask = rootMask(type)
|
|
735
888
|
if (partitionTypes.filter((member) => (rootMask(member) & mask) !== 0).length > 1 && hasChoices(type)) {
|
|
@@ -746,8 +899,8 @@ function translateJsonSchemaMultiDocument(
|
|
|
746
899
|
}
|
|
747
900
|
|
|
748
901
|
function intersectUnions(
|
|
749
|
-
left:
|
|
750
|
-
right:
|
|
902
|
+
left: ImportedUnion,
|
|
903
|
+
right: ImportedUnion,
|
|
751
904
|
path: Path
|
|
752
905
|
): ImportedJsonSchemaRepresentation {
|
|
753
906
|
const literals = intersectLiteralUnions(left, right, path)
|
|
@@ -766,19 +919,19 @@ function translateJsonSchemaMultiDocument(
|
|
|
766
919
|
if (right._tag === "Never") return right
|
|
767
920
|
if (left._tag === "Unknown") return annotateIntersection(right, left, right)
|
|
768
921
|
if (right._tag === "Unknown") return annotateIntersection(left, left, right)
|
|
769
|
-
if (left._tag === "Reference")
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
)
|
|
922
|
+
if (left._tag === "Reference") {
|
|
923
|
+
// Resolve an unannotated reference first. An annotated empty definition
|
|
924
|
+
// could otherwise leave the other reference unresolved during union partitioning.
|
|
925
|
+
if (
|
|
926
|
+
(left.annotations !== undefined || left.customAnnotations !== undefined) &&
|
|
927
|
+
right._tag === "Reference" && right.annotations === undefined && right.customAnnotations === undefined
|
|
928
|
+
) {
|
|
929
|
+
return intersect(left, resolveReference(right, path), path)
|
|
930
|
+
}
|
|
931
|
+
return annotate(intersect(resolveReference(left, path), right, path), left)
|
|
776
932
|
}
|
|
777
|
-
if (right._tag === "
|
|
778
|
-
return annotate(
|
|
779
|
-
intersect(left, right.thunk as ImportedJsonSchemaRepresentation, path),
|
|
780
|
-
right.annotations
|
|
781
|
-
)
|
|
933
|
+
if (right._tag === "Reference") {
|
|
934
|
+
return annotate(intersect(left, resolveReference(right, path), path), right)
|
|
782
935
|
}
|
|
783
936
|
if (left._tag === "Union" && right._tag === "Union") return intersectUnions(left, right, path)
|
|
784
937
|
if (left._tag === "Union") return intersectUnionWithType(left, right, path, true)
|
|
@@ -794,18 +947,16 @@ function translateJsonSchemaMultiDocument(
|
|
|
794
947
|
return intersectPrimitiveWithLiteral(left, right)
|
|
795
948
|
}
|
|
796
949
|
if (right._tag !== "String") return never
|
|
797
|
-
|
|
798
|
-
return annotate({ _tag: "String", checks: stringChecks }, stringAnnotations)
|
|
950
|
+
return { _tag: "String", ...intersectChecks(left, right) }
|
|
799
951
|
case "Number":
|
|
800
952
|
if (right._tag === "Literal") {
|
|
801
953
|
return intersectPrimitiveWithLiteral(left, right)
|
|
802
954
|
}
|
|
803
955
|
if (right._tag !== "Number") return never
|
|
804
|
-
|
|
805
|
-
"
|
|
806
|
-
"effect/schema/isInt"
|
|
807
|
-
|
|
808
|
-
return annotate({ _tag: "Number", checks: numberChecks }, numberAnnotations)
|
|
956
|
+
return {
|
|
957
|
+
_tag: "Number",
|
|
958
|
+
...intersectChecks(left, right, ["effect/schema/isFinite", "effect/schema/isInt"])
|
|
959
|
+
}
|
|
809
960
|
case "Boolean":
|
|
810
961
|
if (right._tag === "Literal") {
|
|
811
962
|
return intersectPrimitiveWithLiteral(left, right)
|
|
@@ -844,22 +995,12 @@ function translateJsonSchemaMultiDocument(
|
|
|
844
995
|
if (right._tag !== "Arrays") return never
|
|
845
996
|
const arrays = intersectArrays(left, right, path)
|
|
846
997
|
if (arrays === undefined) return never
|
|
847
|
-
|
|
848
|
-
return annotate({ _tag: "Arrays", ...arrays, checks }, annotations)
|
|
998
|
+
return { _tag: "Arrays", ...arrays, ...intersectChecks(left, right, ["effect/schema/isUnique"]) }
|
|
849
999
|
}
|
|
850
1000
|
case "Objects": {
|
|
851
1001
|
if (right._tag !== "Objects") return never
|
|
852
|
-
const
|
|
853
|
-
|
|
854
|
-
...objectScopesByProperties.get(left.propertySignatures)![0],
|
|
855
|
-
...objectScopesByProperties.get(right.propertySignatures)![0]
|
|
856
|
-
]
|
|
857
|
-
return lowerObject(
|
|
858
|
-
scopes,
|
|
859
|
-
checks,
|
|
860
|
-
annotations,
|
|
861
|
-
path
|
|
862
|
-
)
|
|
1002
|
+
const scopes = [...left.scopes, ...right.scopes]
|
|
1003
|
+
return lowerObject(scopes, intersectChecks(left, right), path)
|
|
863
1004
|
}
|
|
864
1005
|
}
|
|
865
1006
|
}
|
|
@@ -882,7 +1023,7 @@ function translateJsonSchemaMultiDocument(
|
|
|
882
1023
|
if (
|
|
883
1024
|
isObject(schema.not) &&
|
|
884
1025
|
Object.keys(schema.not).length === 0
|
|
885
|
-
) return annotate(never, jsonSchemaAnnotations(schema))
|
|
1026
|
+
) return annotate(never, jsonSchemaAnnotations(schema, options))
|
|
886
1027
|
const wasInNestedResource = inNestedResource
|
|
887
1028
|
inNestedResource ||= !isRoot && typeof schema.$id === "string"
|
|
888
1029
|
for (const keyword of Object.keys(schema)) {
|
|
@@ -926,21 +1067,15 @@ function translateJsonSchemaMultiDocument(
|
|
|
926
1067
|
[...path, "$ref"]
|
|
927
1068
|
)
|
|
928
1069
|
}
|
|
929
|
-
const
|
|
930
|
-
if (
|
|
1070
|
+
const key = JsonSchema.getReferenceKey(schema.$ref)
|
|
1071
|
+
if (key !== undefined && !Object.hasOwn(document.definitions, key)) {
|
|
931
1072
|
throw errorWithPath(
|
|
932
|
-
`
|
|
1073
|
+
`Missing definition ${JSON.stringify(key)} for $ref ${JSON.stringify(schema.$ref)}.`,
|
|
933
1074
|
[...path, "$ref"]
|
|
934
1075
|
)
|
|
935
1076
|
}
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
`Missing definition ${JSON.stringify($ref)} for $ref ${JSON.stringify(schema.$ref)}.`,
|
|
939
|
-
[...path, "$ref"]
|
|
940
|
-
)
|
|
941
|
-
}
|
|
942
|
-
if (!reachableDefinitions.has($ref)) reachableDefinitions.set($ref, path)
|
|
943
|
-
const reference: SchemaRepresentation.Reference = { _tag: "Reference", $ref }
|
|
1077
|
+
const $ref = key ?? resolvePointer(schema.$ref, path)
|
|
1078
|
+
const reference: ImportedReference = { _tag: "Reference", $ref, path }
|
|
944
1079
|
representation = representation._tag === "Unknown"
|
|
945
1080
|
? reference
|
|
946
1081
|
: representation._tag === "Never"
|
|
@@ -955,11 +1090,7 @@ function translateJsonSchemaMultiDocument(
|
|
|
955
1090
|
path
|
|
956
1091
|
)
|
|
957
1092
|
}
|
|
958
|
-
|
|
959
|
-
if (annotations !== undefined && representation._tag === "Reference") {
|
|
960
|
-
annotatedReferences.push({ reference: representation, path })
|
|
961
|
-
}
|
|
962
|
-
representation = annotate(representation, annotations)
|
|
1093
|
+
representation = annotate(representation, jsonSchemaAnnotations(schema, options))
|
|
963
1094
|
|
|
964
1095
|
if (Array.isArray(schema.allOf)) {
|
|
965
1096
|
for (let index = 0; index < schema.allOf.length; index++) {
|
|
@@ -1018,7 +1149,7 @@ function translateJsonSchemaMultiDocument(
|
|
|
1018
1149
|
return {
|
|
1019
1150
|
_tag: "Number",
|
|
1020
1151
|
checks: [
|
|
1021
|
-
|
|
1152
|
+
makeFilter(type === "number" ? Schema.isFinite() : Schema.isInt()),
|
|
1022
1153
|
...collectNumberChecks(schema)
|
|
1023
1154
|
]
|
|
1024
1155
|
}
|
|
@@ -1051,7 +1182,7 @@ function translateJsonSchemaMultiDocument(
|
|
|
1051
1182
|
}
|
|
1052
1183
|
case "object": {
|
|
1053
1184
|
const scope = collectObjectScope(schema, path)
|
|
1054
|
-
return lowerObject([scope], collectObjectChecks(schema, path)
|
|
1185
|
+
return lowerObject([scope], { checks: collectObjectChecks(schema, path) }, path)
|
|
1055
1186
|
}
|
|
1056
1187
|
default:
|
|
1057
1188
|
return unknown
|
|
@@ -1074,7 +1205,7 @@ function translateJsonSchemaMultiDocument(
|
|
|
1074
1205
|
} catch {
|
|
1075
1206
|
throw errorWithPath("Cannot import pattern using ECMAScript Unicode mode.", path)
|
|
1076
1207
|
}
|
|
1077
|
-
return
|
|
1208
|
+
return makeFilter(Schema.isPattern(regex))
|
|
1078
1209
|
}
|
|
1079
1210
|
}
|
|
1080
1211
|
}
|
|
@@ -1082,11 +1213,11 @@ function translateJsonSchemaMultiDocument(
|
|
|
1082
1213
|
function collectStringChecks(schema: JsonSchema.JsonSchema, path: Path): Array<Check> {
|
|
1083
1214
|
const checks: Array<Check> = []
|
|
1084
1215
|
if (schema.minLength === 1) {
|
|
1085
|
-
addNumberCheck(checks, schema.minLength,
|
|
1216
|
+
addNumberCheck(checks, schema.minLength, Schema.isMinLength)
|
|
1086
1217
|
} else {
|
|
1087
|
-
addNumberCheck(checks, schema.minLength,
|
|
1218
|
+
addNumberCheck(checks, schema.minLength, Schema.isMinCodePoints)
|
|
1088
1219
|
}
|
|
1089
|
-
addNumberCheck(checks, schema.maxLength,
|
|
1220
|
+
addNumberCheck(checks, schema.maxLength, Schema.isMaxCodePoints)
|
|
1090
1221
|
if (typeof schema.pattern === "string") {
|
|
1091
1222
|
const check = importPatternCheck(schema.pattern, [...path, "pattern"])
|
|
1092
1223
|
if (check !== undefined) checks.push(check)
|
|
@@ -1096,11 +1227,11 @@ function translateJsonSchemaMultiDocument(
|
|
|
1096
1227
|
|
|
1097
1228
|
function collectNumberChecks(schema: JsonSchema.JsonSchema): Array<Check> {
|
|
1098
1229
|
const checks: Array<Check> = []
|
|
1099
|
-
addNumberCheck(checks, schema.minimum,
|
|
1100
|
-
addNumberCheck(checks, schema.maximum,
|
|
1101
|
-
addNumberCheck(checks, schema.exclusiveMinimum,
|
|
1102
|
-
addNumberCheck(checks, schema.exclusiveMaximum,
|
|
1103
|
-
addNumberCheck(checks, schema.multipleOf,
|
|
1230
|
+
addNumberCheck(checks, schema.minimum, Schema.isGreaterThanOrEqualTo)
|
|
1231
|
+
addNumberCheck(checks, schema.maximum, Schema.isLessThanOrEqualTo)
|
|
1232
|
+
addNumberCheck(checks, schema.exclusiveMinimum, Schema.isGreaterThan)
|
|
1233
|
+
addNumberCheck(checks, schema.exclusiveMaximum, Schema.isLessThan)
|
|
1234
|
+
addNumberCheck(checks, schema.multipleOf, Schema.isMultipleOf)
|
|
1104
1235
|
return checks
|
|
1105
1236
|
}
|
|
1106
1237
|
|
|
@@ -1110,13 +1241,13 @@ function translateJsonSchemaMultiDocument(
|
|
|
1110
1241
|
!Array.isArray(schema.prefixItems) ||
|
|
1111
1242
|
typeof schema.minItems === "number" && schema.minItems > schema.prefixItems.length
|
|
1112
1243
|
) {
|
|
1113
|
-
addNumberCheck(checks, schema.minItems,
|
|
1244
|
+
addNumberCheck(checks, schema.minItems, Schema.isMinLength)
|
|
1114
1245
|
}
|
|
1115
1246
|
if (!isMaxItemsRedundant) {
|
|
1116
|
-
addNumberCheck(checks, schema.maxItems,
|
|
1247
|
+
addNumberCheck(checks, schema.maxItems, Schema.isMaxLength)
|
|
1117
1248
|
}
|
|
1118
1249
|
if (schema.uniqueItems === true) {
|
|
1119
|
-
checks.push(
|
|
1250
|
+
checks.push(makeFilter(Schema.isUnique()))
|
|
1120
1251
|
}
|
|
1121
1252
|
return checks
|
|
1122
1253
|
}
|
|
@@ -1170,44 +1301,33 @@ function translateJsonSchemaMultiDocument(
|
|
|
1170
1301
|
path: Path
|
|
1171
1302
|
): Array<Check> {
|
|
1172
1303
|
const checks: Array<Check> = []
|
|
1173
|
-
addNumberCheck(checks, schema.minProperties,
|
|
1174
|
-
addNumberCheck(checks, schema.maxProperties,
|
|
1304
|
+
addNumberCheck(checks, schema.minProperties, Schema.isMinProperties)
|
|
1305
|
+
addNumberCheck(checks, schema.maxProperties, Schema.isMaxProperties)
|
|
1175
1306
|
if (schema.propertyNames !== undefined) {
|
|
1176
1307
|
const propertyNamesPath = [...path, "propertyNames"]
|
|
1177
|
-
checks.push(
|
|
1178
|
-
"
|
|
1179
|
-
|
|
1180
|
-
[intersect(
|
|
1308
|
+
checks.push({
|
|
1309
|
+
_tag: "PropertyNames",
|
|
1310
|
+
type: intersect(
|
|
1181
1311
|
string,
|
|
1182
1312
|
translateSchema(schema.propertyNames, propertyNamesPath),
|
|
1183
1313
|
propertyNamesPath
|
|
1184
|
-
)
|
|
1185
|
-
)
|
|
1314
|
+
)
|
|
1315
|
+
})
|
|
1186
1316
|
}
|
|
1187
1317
|
return checks
|
|
1188
1318
|
}
|
|
1189
1319
|
|
|
1190
|
-
|
|
1191
|
-
const representations = document.schemas.map((schema, index) =>
|
|
1320
|
+
return document.schemas.map((schema, index) =>
|
|
1192
1321
|
finalize(translateSchema(schema, singleRoot ? ["schema"] : ["schemas", index], true))
|
|
1193
|
-
) as [
|
|
1194
|
-
// Definitions expanded away by intersections do not need a standalone output schema.
|
|
1195
|
-
for (const key of finalReferences) {
|
|
1196
|
-
InternalRecord.assignProperty(references, key, finalize(translateDefinition(key, reachableDefinitions.get(key)!)))
|
|
1197
|
-
}
|
|
1198
|
-
for (const { reference, path } of annotatedReferences) {
|
|
1199
|
-
resolveReference(reference, path)
|
|
1200
|
-
}
|
|
1201
|
-
return { representations, references }
|
|
1322
|
+
) as [Schema.Top, ...Array<Schema.Top>]
|
|
1202
1323
|
}
|
|
1203
1324
|
|
|
1204
1325
|
/** @internal */
|
|
1205
1326
|
export function fromJsonSchemaDocument(
|
|
1206
1327
|
document: JsonSchema.Document<"draft-2020-12">,
|
|
1207
|
-
options: SchemaRepresentation.FromJsonSchemaOptions | undefined
|
|
1208
|
-
revivers: ReadonlyArray<SchemaRepresentation.AnyReviver>
|
|
1328
|
+
options: SchemaRepresentation.FromJsonSchemaOptions | undefined
|
|
1209
1329
|
): Schema.Top {
|
|
1210
|
-
|
|
1330
|
+
return fromJsonSchemaMultiDocument(
|
|
1211
1331
|
{
|
|
1212
1332
|
dialect: document.dialect,
|
|
1213
1333
|
schemas: [document.schema],
|
|
@@ -1215,18 +1335,5 @@ export function fromJsonSchemaDocument(
|
|
|
1215
1335
|
},
|
|
1216
1336
|
options,
|
|
1217
1337
|
true
|
|
1218
|
-
)
|
|
1219
|
-
return fromRepresentation({
|
|
1220
|
-
representation: translated.representations[0],
|
|
1221
|
-
references: translated.references
|
|
1222
|
-
}, revivers)
|
|
1223
|
-
}
|
|
1224
|
-
|
|
1225
|
-
/** @internal */
|
|
1226
|
-
export function fromJsonSchemaMultiDocument(
|
|
1227
|
-
document: JsonSchema.MultiDocument<"draft-2020-12">,
|
|
1228
|
-
options: SchemaRepresentation.FromJsonSchemaOptions | undefined,
|
|
1229
|
-
revivers: ReadonlyArray<SchemaRepresentation.AnyReviver>
|
|
1230
|
-
): readonly [Schema.Top, ...Array<Schema.Top>] {
|
|
1231
|
-
return fromRepresentations(translateJsonSchemaMultiDocument(document, options), revivers)
|
|
1338
|
+
)[0]
|
|
1232
1339
|
}
|