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
package/src/Graph.ts
CHANGED
|
@@ -1254,115 +1254,7 @@ export const compose: {
|
|
|
1254
1254
|
const getEdgeIdentity = options?.edgeIdentity ?? ((edge: E) => edge as unknown as EI)
|
|
1255
1255
|
const selfMaps = buildNodeMaps(self, getNodeIdentity)
|
|
1256
1256
|
const thatMaps = buildNodeMaps(that, getNodeIdentity)
|
|
1257
|
-
const nodes = MutableHashMap.empty
|
|
1258
|
-
* Composes two graphs, merging nodes by identity.
|
|
1259
|
-
*
|
|
1260
|
-
* **When to use**
|
|
1261
|
-
*
|
|
1262
|
-
* Use when combining graphs that describe overlapping logical entities and
|
|
1263
|
-
* should merge those entities by payload or a projected identity.
|
|
1264
|
-
*
|
|
1265
|
-
* **Details**
|
|
1266
|
-
*
|
|
1267
|
-
* Nodes and edges present in both graphs use data from `that`. The result has
|
|
1268
|
-
* the same graph kind as `self`. Throws a `GraphError` when the graph kinds do
|
|
1269
|
-
* not match. `nodeIdentity` and `edgeIdentity` default to the complete node and
|
|
1270
|
-
* edge data. Edge identity also includes the endpoint identities.
|
|
1271
|
-
*
|
|
1272
|
-
* `G1 ∪ G2 = {V1 ∪ V2, E1 ∪ E2}`
|
|
1273
|
-
*
|
|
1274
|
-
* **Gotchas**
|
|
1275
|
-
*
|
|
1276
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1277
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1278
|
-
* Parallel edges with equal identities are also coalesced, with the last edge
|
|
1279
|
-
* supplying the data. The result allocates new node and edge identifiers.
|
|
1280
|
-
*
|
|
1281
|
-
* **Example** (Combining graphs)
|
|
1282
|
-
*
|
|
1283
|
-
* ```ts import.meta.vitest
|
|
1284
|
-
* import { Graph } from "effect"
|
|
1285
|
-
*
|
|
1286
|
-
* const left = Graph.directed<{ id: string }, string>((mutable) => {
|
|
1287
|
-
* const a = Graph.addNode(mutable, { id: "A" })
|
|
1288
|
-
* const b = Graph.addNode(mutable, { id: "B" })
|
|
1289
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
1290
|
-
* })
|
|
1291
|
-
*
|
|
1292
|
-
* const right = Graph.directed<{ id: string }, string>((mutable) => {
|
|
1293
|
-
* const b = Graph.addNode(mutable, { id: "B" })
|
|
1294
|
-
* const c = Graph.addNode(mutable, { id: "C" })
|
|
1295
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1296
|
-
* })
|
|
1297
|
-
*
|
|
1298
|
-
* const result = Graph.compose(left, right, {
|
|
1299
|
-
* nodeIdentity: (node) => node.id
|
|
1300
|
-
* })
|
|
1301
|
-
*
|
|
1302
|
-
* Graph.nodeCount(result) // => 3
|
|
1303
|
-
* Graph.edgeCount(result) // => 2
|
|
1304
|
-
* ```
|
|
1305
|
-
*
|
|
1306
|
-
* @see {@link sum} for combining graphs without merging equal nodes
|
|
1307
|
-
* @stability unstable
|
|
1308
|
-
* @category set operations
|
|
1309
|
-
* @since 4.0.0
|
|
1310
|
-
*/
|
|
1311
|
-
NI, /**
|
|
1312
|
-
* Composes two graphs, merging nodes by identity.
|
|
1313
|
-
*
|
|
1314
|
-
* **When to use**
|
|
1315
|
-
*
|
|
1316
|
-
* Use when combining graphs that describe overlapping logical entities and
|
|
1317
|
-
* should merge those entities by payload or a projected identity.
|
|
1318
|
-
*
|
|
1319
|
-
* **Details**
|
|
1320
|
-
*
|
|
1321
|
-
* Nodes and edges present in both graphs use data from `that`. The result has
|
|
1322
|
-
* the same graph kind as `self`. Throws a `GraphError` when the graph kinds do
|
|
1323
|
-
* not match. `nodeIdentity` and `edgeIdentity` default to the complete node and
|
|
1324
|
-
* edge data. Edge identity also includes the endpoint identities.
|
|
1325
|
-
*
|
|
1326
|
-
* `G1 ∪ G2 = {V1 ∪ V2, E1 ∪ E2}`
|
|
1327
|
-
*
|
|
1328
|
-
* **Gotchas**
|
|
1329
|
-
*
|
|
1330
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1331
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1332
|
-
* Parallel edges with equal identities are also coalesced, with the last edge
|
|
1333
|
-
* supplying the data. The result allocates new node and edge identifiers.
|
|
1334
|
-
*
|
|
1335
|
-
* **Example** (Combining graphs)
|
|
1336
|
-
*
|
|
1337
|
-
* ```ts import.meta.vitest
|
|
1338
|
-
* import { Graph } from "effect"
|
|
1339
|
-
*
|
|
1340
|
-
* const left = Graph.directed<{ id: string }, string>((mutable) => {
|
|
1341
|
-
* const a = Graph.addNode(mutable, { id: "A" })
|
|
1342
|
-
* const b = Graph.addNode(mutable, { id: "B" })
|
|
1343
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
1344
|
-
* })
|
|
1345
|
-
*
|
|
1346
|
-
* const right = Graph.directed<{ id: string }, string>((mutable) => {
|
|
1347
|
-
* const b = Graph.addNode(mutable, { id: "B" })
|
|
1348
|
-
* const c = Graph.addNode(mutable, { id: "C" })
|
|
1349
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1350
|
-
* })
|
|
1351
|
-
*
|
|
1352
|
-
* const result = Graph.compose(left, right, {
|
|
1353
|
-
* nodeIdentity: (node) => node.id
|
|
1354
|
-
* })
|
|
1355
|
-
*
|
|
1356
|
-
* Graph.nodeCount(result) // => 3
|
|
1357
|
-
* Graph.edgeCount(result) // => 2
|
|
1358
|
-
* ```
|
|
1359
|
-
*
|
|
1360
|
-
* @see {@link sum} for combining graphs without merging equal nodes
|
|
1361
|
-
* @stability unstable
|
|
1362
|
-
* @category set operations
|
|
1363
|
-
* @since 4.0.0
|
|
1364
|
-
*/
|
|
1365
|
-
N>()
|
|
1257
|
+
const nodes = MutableHashMap.empty<NI, N>()
|
|
1366
1258
|
const edges = buildEdgeMap(self, selfMaps, getEdgeIdentity)
|
|
1367
1259
|
|
|
1368
1260
|
for (const [identity, data] of selfMaps.byIdentity) {
|
|
@@ -1376,121 +1268,13 @@ export const compose: {
|
|
|
1376
1268
|
MutableHashMap.set(edges, identity, data)
|
|
1377
1269
|
}
|
|
1378
1270
|
|
|
1379
|
-
return make(self.type)
|
|
1380
|
-
* Composes two graphs, merging nodes by identity.
|
|
1381
|
-
*
|
|
1382
|
-
* **When to use**
|
|
1383
|
-
*
|
|
1384
|
-
* Use when combining graphs that describe overlapping logical entities and
|
|
1385
|
-
* should merge those entities by payload or a projected identity.
|
|
1386
|
-
*
|
|
1387
|
-
* **Details**
|
|
1388
|
-
*
|
|
1389
|
-
* Nodes and edges present in both graphs use data from `that`. The result has
|
|
1390
|
-
* the same graph kind as `self`. Throws a `GraphError` when the graph kinds do
|
|
1391
|
-
* not match. `nodeIdentity` and `edgeIdentity` default to the complete node and
|
|
1392
|
-
* edge data. Edge identity also includes the endpoint identities.
|
|
1393
|
-
*
|
|
1394
|
-
* `G1 ∪ G2 = {V1 ∪ V2, E1 ∪ E2}`
|
|
1395
|
-
*
|
|
1396
|
-
* **Gotchas**
|
|
1397
|
-
*
|
|
1398
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1399
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1400
|
-
* Parallel edges with equal identities are also coalesced, with the last edge
|
|
1401
|
-
* supplying the data. The result allocates new node and edge identifiers.
|
|
1402
|
-
*
|
|
1403
|
-
* **Example** (Combining graphs)
|
|
1404
|
-
*
|
|
1405
|
-
* ```ts import.meta.vitest
|
|
1406
|
-
* import { Graph } from "effect"
|
|
1407
|
-
*
|
|
1408
|
-
* const left = Graph.directed<{ id: string }, string>((mutable) => {
|
|
1409
|
-
* const a = Graph.addNode(mutable, { id: "A" })
|
|
1410
|
-
* const b = Graph.addNode(mutable, { id: "B" })
|
|
1411
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
1412
|
-
* })
|
|
1413
|
-
*
|
|
1414
|
-
* const right = Graph.directed<{ id: string }, string>((mutable) => {
|
|
1415
|
-
* const b = Graph.addNode(mutable, { id: "B" })
|
|
1416
|
-
* const c = Graph.addNode(mutable, { id: "C" })
|
|
1417
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1418
|
-
* })
|
|
1419
|
-
*
|
|
1420
|
-
* const result = Graph.compose(left, right, {
|
|
1421
|
-
* nodeIdentity: (node) => node.id
|
|
1422
|
-
* })
|
|
1423
|
-
*
|
|
1424
|
-
* Graph.nodeCount(result) // => 3
|
|
1425
|
-
* Graph.edgeCount(result) // => 2
|
|
1426
|
-
* ```
|
|
1427
|
-
*
|
|
1428
|
-
* @see {@link sum} for combining graphs without merging equal nodes
|
|
1429
|
-
* @stability unstable
|
|
1430
|
-
* @category set operations
|
|
1431
|
-
* @since 4.0.0
|
|
1432
|
-
*/
|
|
1433
|
-
N, /**
|
|
1434
|
-
* Composes two graphs, merging nodes by identity.
|
|
1435
|
-
*
|
|
1436
|
-
* **When to use**
|
|
1437
|
-
*
|
|
1438
|
-
* Use when combining graphs that describe overlapping logical entities and
|
|
1439
|
-
* should merge those entities by payload or a projected identity.
|
|
1440
|
-
*
|
|
1441
|
-
* **Details**
|
|
1442
|
-
*
|
|
1443
|
-
* Nodes and edges present in both graphs use data from `that`. The result has
|
|
1444
|
-
* the same graph kind as `self`. Throws a `GraphError` when the graph kinds do
|
|
1445
|
-
* not match. `nodeIdentity` and `edgeIdentity` default to the complete node and
|
|
1446
|
-
* edge data. Edge identity also includes the endpoint identities.
|
|
1447
|
-
*
|
|
1448
|
-
* `G1 ∪ G2 = {V1 ∪ V2, E1 ∪ E2}`
|
|
1449
|
-
*
|
|
1450
|
-
* **Gotchas**
|
|
1451
|
-
*
|
|
1452
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1453
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1454
|
-
* Parallel edges with equal identities are also coalesced, with the last edge
|
|
1455
|
-
* supplying the data. The result allocates new node and edge identifiers.
|
|
1456
|
-
*
|
|
1457
|
-
* **Example** (Combining graphs)
|
|
1458
|
-
*
|
|
1459
|
-
* ```ts import.meta.vitest
|
|
1460
|
-
* import { Graph } from "effect"
|
|
1461
|
-
*
|
|
1462
|
-
* const left = Graph.directed<{ id: string }, string>((mutable) => {
|
|
1463
|
-
* const a = Graph.addNode(mutable, { id: "A" })
|
|
1464
|
-
* const b = Graph.addNode(mutable, { id: "B" })
|
|
1465
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
1466
|
-
* })
|
|
1467
|
-
*
|
|
1468
|
-
* const right = Graph.directed<{ id: string }, string>((mutable) => {
|
|
1469
|
-
* const b = Graph.addNode(mutable, { id: "B" })
|
|
1470
|
-
* const c = Graph.addNode(mutable, { id: "C" })
|
|
1471
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1472
|
-
* })
|
|
1473
|
-
*
|
|
1474
|
-
* const result = Graph.compose(left, right, {
|
|
1475
|
-
* nodeIdentity: (node) => node.id
|
|
1476
|
-
* })
|
|
1477
|
-
*
|
|
1478
|
-
* Graph.nodeCount(result) // => 3
|
|
1479
|
-
* Graph.edgeCount(result) // => 2
|
|
1480
|
-
* ```
|
|
1481
|
-
*
|
|
1482
|
-
* @see {@link sum} for combining graphs without merging equal nodes
|
|
1483
|
-
* @stability unstable
|
|
1484
|
-
* @category set operations
|
|
1485
|
-
* @since 4.0.0
|
|
1486
|
-
*/
|
|
1487
|
-
E>((mutable) => {
|
|
1271
|
+
return make(self.type)<N, E>((mutable) => {
|
|
1488
1272
|
const indexByIdentity = addNodesByIdentity(mutable, nodes)
|
|
1489
1273
|
|
|
1490
1274
|
for (const [identity, data] of edges) {
|
|
1491
1275
|
addEdgeByIdentity(mutable, indexByIdentity, identity, data)
|
|
1492
1276
|
}
|
|
1493
|
-
})
|
|
1277
|
+
})
|
|
1494
1278
|
}
|
|
1495
1279
|
)
|
|
1496
1280
|
|
|
@@ -1668,83 +1452,116 @@ export const intersection: {
|
|
|
1668
1452
|
const getEdgeIdentity = options?.edgeIdentity ?? ((edge: E) => edge as unknown as EI)
|
|
1669
1453
|
const selfMaps = buildNodeMaps(self, getNodeIdentity)
|
|
1670
1454
|
const thatMaps = buildNodeMaps(that, getNodeIdentity)
|
|
1671
|
-
const nodes = MutableHashMap.empty
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1455
|
+
const nodes = MutableHashMap.empty<NI, N>()
|
|
1456
|
+
const selfEdges = buildEdgeMap(self, selfMaps, getEdgeIdentity)
|
|
1457
|
+
const thatEdges = MutableHashMap.empty<EdgeIdentity<NI, EI>, E>()
|
|
1458
|
+
|
|
1459
|
+
for (const [identity, data] of selfMaps.byIdentity) {
|
|
1460
|
+
if (MutableHashMap.has(thatMaps.byIdentity, identity)) {
|
|
1461
|
+
MutableHashMap.set(nodes, identity, data)
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
for (const edge of thatImpl.edges.values()) {
|
|
1466
|
+
const sourceIdentity = nodeIdentityAt(thatMaps, edge.source)
|
|
1467
|
+
const targetIdentity = nodeIdentityAt(thatMaps, edge.target)
|
|
1468
|
+
if (MutableHashMap.has(nodes, sourceIdentity) && MutableHashMap.has(nodes, targetIdentity)) {
|
|
1469
|
+
const edgeIdentity = new EdgeIdentity(that.type, sourceIdentity, targetIdentity, getEdgeIdentity(edge.data))
|
|
1470
|
+
MutableHashMap.set(thatEdges, edgeIdentity, edge.data)
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
|
|
1474
|
+
return make(self.type)<N, E>((mutable) => {
|
|
1475
|
+
const indexByIdentity = addNodesByIdentity(mutable, nodes)
|
|
1476
|
+
|
|
1477
|
+
for (const [identity, data] of thatEdges) {
|
|
1478
|
+
if (MutableHashMap.has(selfEdges, identity)) {
|
|
1479
|
+
addEdgeByIdentity(mutable, indexByIdentity, identity, data)
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
})
|
|
1483
|
+
})
|
|
1484
|
+
|
|
1485
|
+
/**
|
|
1486
|
+
* Returns `self` without edges also present in `that`.
|
|
1487
|
+
*
|
|
1488
|
+
* **When to use**
|
|
1489
|
+
*
|
|
1490
|
+
* Use when retaining all logical nodes from one graph while removing edge
|
|
1491
|
+
* relationships also represented by another graph.
|
|
1492
|
+
*
|
|
1493
|
+
* **Details**
|
|
1494
|
+
*
|
|
1495
|
+
* All nodes from `self` are preserved. Edges are matched by endpoint and edge
|
|
1496
|
+
* identities. The result has the same graph kind as `self`. Throws a
|
|
1497
|
+
* `GraphError` when the graph kinds do not match. `nodeIdentity` and
|
|
1498
|
+
* `edgeIdentity` default to the complete node and edge data.
|
|
1499
|
+
*
|
|
1500
|
+
* `G1 \ G2 = {V1, E1 \ E2}`
|
|
1501
|
+
*
|
|
1502
|
+
* **Gotchas**
|
|
1503
|
+
*
|
|
1504
|
+
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1505
|
+
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1506
|
+
* If `that` contains an edge identity, every parallel edge with that identity
|
|
1507
|
+
* is removed from `self`. The result allocates new node and edge identifiers.
|
|
1508
|
+
*
|
|
1509
|
+
* **Example** (Removing shared edges)
|
|
1510
|
+
*
|
|
1511
|
+
* ```ts import.meta.vitest
|
|
1512
|
+
* import { Graph } from "effect"
|
|
1513
|
+
*
|
|
1514
|
+
* const left = Graph.directed<string, string>((mutable) => {
|
|
1515
|
+
* const a = Graph.addNode(mutable, "A")
|
|
1516
|
+
* const b = Graph.addNode(mutable, "B")
|
|
1517
|
+
* const c = Graph.addNode(mutable, "C")
|
|
1518
|
+
* Graph.addEdge(mutable, a, b, "A-B")
|
|
1519
|
+
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1520
|
+
* })
|
|
1521
|
+
*
|
|
1522
|
+
* const right = Graph.directed<string, string>((mutable) => {
|
|
1523
|
+
* const b = Graph.addNode(mutable, "B")
|
|
1524
|
+
* const c = Graph.addNode(mutable, "C")
|
|
1525
|
+
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1526
|
+
* })
|
|
1527
|
+
*
|
|
1528
|
+
* const result = Graph.difference(left, right)
|
|
1529
|
+
*
|
|
1530
|
+
* Graph.nodeCount(result) // => 3
|
|
1531
|
+
* Graph.edgeCount(result) // => 1
|
|
1532
|
+
* ```
|
|
1533
|
+
*
|
|
1534
|
+
* @see {@link symmetricDifference} for retaining edges unique to either graph
|
|
1535
|
+
* @stability unstable
|
|
1536
|
+
* @category set operations
|
|
1537
|
+
* @since 4.0.0
|
|
1538
|
+
*/
|
|
1539
|
+
export const difference: {
|
|
1540
|
+
/**
|
|
1541
|
+
* Returns `self` without edges also present in `that`.
|
|
1725
1542
|
*
|
|
1726
1543
|
* **When to use**
|
|
1727
1544
|
*
|
|
1728
|
-
* Use when
|
|
1729
|
-
*
|
|
1545
|
+
* Use when retaining all logical nodes from one graph while removing edge
|
|
1546
|
+
* relationships also represented by another graph.
|
|
1730
1547
|
*
|
|
1731
1548
|
* **Details**
|
|
1732
1549
|
*
|
|
1733
|
-
*
|
|
1734
|
-
* the same graph kind as `self`. Throws a
|
|
1735
|
-
*
|
|
1736
|
-
*
|
|
1550
|
+
* All nodes from `self` are preserved. Edges are matched by endpoint and edge
|
|
1551
|
+
* identities. The result has the same graph kind as `self`. Throws a
|
|
1552
|
+
* `GraphError` when the graph kinds do not match. `nodeIdentity` and
|
|
1553
|
+
* `edgeIdentity` default to the complete node and edge data.
|
|
1737
1554
|
*
|
|
1738
|
-
* `G1
|
|
1555
|
+
* `G1 \ G2 = {V1, E1 \ E2}`
|
|
1739
1556
|
*
|
|
1740
1557
|
* **Gotchas**
|
|
1741
1558
|
*
|
|
1742
1559
|
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1743
1560
|
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1744
|
-
*
|
|
1745
|
-
* allocates new node and edge identifiers.
|
|
1561
|
+
* If `that` contains an edge identity, every parallel edge with that identity
|
|
1562
|
+
* is removed from `self`. The result allocates new node and edge identifiers.
|
|
1746
1563
|
*
|
|
1747
|
-
* **Example** (
|
|
1564
|
+
* **Example** (Removing shared edges)
|
|
1748
1565
|
*
|
|
1749
1566
|
* ```ts import.meta.vitest
|
|
1750
1567
|
* import { Graph } from "effect"
|
|
@@ -1752,53 +1569,54 @@ export const intersection: {
|
|
|
1752
1569
|
* const left = Graph.directed<string, string>((mutable) => {
|
|
1753
1570
|
* const a = Graph.addNode(mutable, "A")
|
|
1754
1571
|
* const b = Graph.addNode(mutable, "B")
|
|
1755
|
-
* Graph.
|
|
1572
|
+
* const c = Graph.addNode(mutable, "C")
|
|
1573
|
+
* Graph.addEdge(mutable, a, b, "A-B")
|
|
1574
|
+
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1756
1575
|
* })
|
|
1757
1576
|
*
|
|
1758
1577
|
* const right = Graph.directed<string, string>((mutable) => {
|
|
1759
|
-
* const a = Graph.addNode(mutable, "A")
|
|
1760
1578
|
* const b = Graph.addNode(mutable, "B")
|
|
1761
|
-
* Graph.
|
|
1579
|
+
* const c = Graph.addNode(mutable, "C")
|
|
1580
|
+
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1762
1581
|
* })
|
|
1763
1582
|
*
|
|
1764
|
-
* const result = Graph.
|
|
1583
|
+
* const result = Graph.difference(left, right)
|
|
1765
1584
|
*
|
|
1766
|
-
* Graph.nodeCount(result) // =>
|
|
1585
|
+
* Graph.nodeCount(result) // => 3
|
|
1767
1586
|
* Graph.edgeCount(result) // => 1
|
|
1768
1587
|
* ```
|
|
1769
1588
|
*
|
|
1770
|
-
* @see {@link
|
|
1589
|
+
* @see {@link symmetricDifference} for retaining edges unique to either graph
|
|
1771
1590
|
* @stability unstable
|
|
1772
1591
|
* @category set operations
|
|
1773
1592
|
* @since 4.0.0
|
|
1774
1593
|
*/
|
|
1775
|
-
N>()
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
* Returns the intersection of two graphs, matching nodes by identity.
|
|
1594
|
+
<N, E, T extends Kind = "directed", NI = N, EI = E>(that: Graph<N, E, T>, options?: IdentityOptions<N, E, NI, EI>): (self: Graph<N, E, NoInfer<T>>) => Graph<N, E, T>
|
|
1595
|
+
/**
|
|
1596
|
+
* Returns `self` without edges also present in `that`.
|
|
1779
1597
|
*
|
|
1780
1598
|
* **When to use**
|
|
1781
1599
|
*
|
|
1782
|
-
* Use when
|
|
1783
|
-
*
|
|
1600
|
+
* Use when retaining all logical nodes from one graph while removing edge
|
|
1601
|
+
* relationships also represented by another graph.
|
|
1784
1602
|
*
|
|
1785
1603
|
* **Details**
|
|
1786
1604
|
*
|
|
1787
|
-
*
|
|
1788
|
-
* the same graph kind as `self`. Throws a
|
|
1789
|
-
*
|
|
1790
|
-
*
|
|
1605
|
+
* All nodes from `self` are preserved. Edges are matched by endpoint and edge
|
|
1606
|
+
* identities. The result has the same graph kind as `self`. Throws a
|
|
1607
|
+
* `GraphError` when the graph kinds do not match. `nodeIdentity` and
|
|
1608
|
+
* `edgeIdentity` default to the complete node and edge data.
|
|
1791
1609
|
*
|
|
1792
|
-
* `G1
|
|
1610
|
+
* `G1 \ G2 = {V1, E1 \ E2}`
|
|
1793
1611
|
*
|
|
1794
1612
|
* **Gotchas**
|
|
1795
1613
|
*
|
|
1796
1614
|
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1797
1615
|
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1798
|
-
*
|
|
1799
|
-
* allocates new node and edge identifiers.
|
|
1616
|
+
* If `that` contains an edge identity, every parallel edge with that identity
|
|
1617
|
+
* is removed from `self`. The result allocates new node and edge identifiers.
|
|
1800
1618
|
*
|
|
1801
|
-
* **Example** (
|
|
1619
|
+
* **Example** (Removing shared edges)
|
|
1802
1620
|
*
|
|
1803
1621
|
* ```ts import.meta.vitest
|
|
1804
1622
|
* import { Graph } from "effect"
|
|
@@ -1806,370 +1624,24 @@ export const intersection: {
|
|
|
1806
1624
|
* const left = Graph.directed<string, string>((mutable) => {
|
|
1807
1625
|
* const a = Graph.addNode(mutable, "A")
|
|
1808
1626
|
* const b = Graph.addNode(mutable, "B")
|
|
1809
|
-
* Graph.
|
|
1627
|
+
* const c = Graph.addNode(mutable, "C")
|
|
1628
|
+
* Graph.addEdge(mutable, a, b, "A-B")
|
|
1629
|
+
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1810
1630
|
* })
|
|
1811
1631
|
*
|
|
1812
1632
|
* const right = Graph.directed<string, string>((mutable) => {
|
|
1813
|
-
* const a = Graph.addNode(mutable, "A")
|
|
1814
1633
|
* const b = Graph.addNode(mutable, "B")
|
|
1815
|
-
* Graph.
|
|
1634
|
+
* const c = Graph.addNode(mutable, "C")
|
|
1635
|
+
* Graph.addEdge(mutable, b, c, "B-C")
|
|
1816
1636
|
* })
|
|
1817
1637
|
*
|
|
1818
|
-
* const result = Graph.
|
|
1638
|
+
* const result = Graph.difference(left, right)
|
|
1819
1639
|
*
|
|
1820
|
-
* Graph.nodeCount(result) // =>
|
|
1640
|
+
* Graph.nodeCount(result) // => 3
|
|
1821
1641
|
* Graph.edgeCount(result) // => 1
|
|
1822
1642
|
* ```
|
|
1823
1643
|
*
|
|
1824
|
-
* @see {@link
|
|
1825
|
-
* @stability unstable
|
|
1826
|
-
* @category set operations
|
|
1827
|
-
* @since 4.0.0
|
|
1828
|
-
*/
|
|
1829
|
-
EdgeIdentity<NI, EI>, /**
|
|
1830
|
-
* Returns the intersection of two graphs, matching nodes by identity.
|
|
1831
|
-
*
|
|
1832
|
-
* **When to use**
|
|
1833
|
-
*
|
|
1834
|
-
* Use when extracting nodes and edges that represent the same logical
|
|
1835
|
-
* structure in both graphs.
|
|
1836
|
-
*
|
|
1837
|
-
* **Details**
|
|
1838
|
-
*
|
|
1839
|
-
* Node data comes from `self`, and edge data comes from `that`. The result has
|
|
1840
|
-
* the same graph kind as `self`. Throws a `GraphError` when the graph kinds do
|
|
1841
|
-
* not match. `nodeIdentity` and `edgeIdentity` default to the complete node and
|
|
1842
|
-
* edge data. Edge identity also includes the endpoint identities.
|
|
1843
|
-
*
|
|
1844
|
-
* `G1 ∩ G2 = {V1 ∩ V2, E1 ∩ E2}`
|
|
1845
|
-
*
|
|
1846
|
-
* **Gotchas**
|
|
1847
|
-
*
|
|
1848
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1849
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1850
|
-
* The result contains at most one edge for each shared edge identity and
|
|
1851
|
-
* allocates new node and edge identifiers.
|
|
1852
|
-
*
|
|
1853
|
-
* **Example** (Finding shared structure)
|
|
1854
|
-
*
|
|
1855
|
-
* ```ts import.meta.vitest
|
|
1856
|
-
* import { Graph } from "effect"
|
|
1857
|
-
*
|
|
1858
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
1859
|
-
* const a = Graph.addNode(mutable, "A")
|
|
1860
|
-
* const b = Graph.addNode(mutable, "B")
|
|
1861
|
-
* Graph.addEdge(mutable, a, b, "shared")
|
|
1862
|
-
* })
|
|
1863
|
-
*
|
|
1864
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
1865
|
-
* const a = Graph.addNode(mutable, "A")
|
|
1866
|
-
* const b = Graph.addNode(mutable, "B")
|
|
1867
|
-
* Graph.addEdge(mutable, a, b, "shared")
|
|
1868
|
-
* })
|
|
1869
|
-
*
|
|
1870
|
-
* const result = Graph.intersection(left, right)
|
|
1871
|
-
*
|
|
1872
|
-
* Graph.nodeCount(result) // => 2
|
|
1873
|
-
* Graph.edgeCount(result) // => 1
|
|
1874
|
-
* ```
|
|
1875
|
-
*
|
|
1876
|
-
* @see {@link compose} for identity-based graph union
|
|
1877
|
-
* @stability unstable
|
|
1878
|
-
* @category set operations
|
|
1879
|
-
* @since 4.0.0
|
|
1880
|
-
*/
|
|
1881
|
-
E>()
|
|
1882
|
-
|
|
1883
|
-
for (const [identity, data] of selfMaps.byIdentity) {
|
|
1884
|
-
if (MutableHashMap.has(thatMaps.byIdentity, identity)) {
|
|
1885
|
-
MutableHashMap.set(nodes, identity, data)
|
|
1886
|
-
}
|
|
1887
|
-
}
|
|
1888
|
-
|
|
1889
|
-
for (const edge of thatImpl.edges.values()) {
|
|
1890
|
-
const sourceIdentity = nodeIdentityAt(thatMaps, edge.source)
|
|
1891
|
-
const targetIdentity = nodeIdentityAt(thatMaps, edge.target)
|
|
1892
|
-
if (MutableHashMap.has(nodes, sourceIdentity) && MutableHashMap.has(nodes, targetIdentity)) {
|
|
1893
|
-
const edgeIdentity = new EdgeIdentity(that.type, sourceIdentity, targetIdentity, getEdgeIdentity(edge.data))
|
|
1894
|
-
MutableHashMap.set(thatEdges, edgeIdentity, edge.data)
|
|
1895
|
-
}
|
|
1896
|
-
}
|
|
1897
|
-
|
|
1898
|
-
return make(self.type)</**
|
|
1899
|
-
* Returns the intersection of two graphs, matching nodes by identity.
|
|
1900
|
-
*
|
|
1901
|
-
* **When to use**
|
|
1902
|
-
*
|
|
1903
|
-
* Use when extracting nodes and edges that represent the same logical
|
|
1904
|
-
* structure in both graphs.
|
|
1905
|
-
*
|
|
1906
|
-
* **Details**
|
|
1907
|
-
*
|
|
1908
|
-
* Node data comes from `self`, and edge data comes from `that`. The result has
|
|
1909
|
-
* the same graph kind as `self`. Throws a `GraphError` when the graph kinds do
|
|
1910
|
-
* not match. `nodeIdentity` and `edgeIdentity` default to the complete node and
|
|
1911
|
-
* edge data. Edge identity also includes the endpoint identities.
|
|
1912
|
-
*
|
|
1913
|
-
* `G1 ∩ G2 = {V1 ∩ V2, E1 ∩ E2}`
|
|
1914
|
-
*
|
|
1915
|
-
* **Gotchas**
|
|
1916
|
-
*
|
|
1917
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1918
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1919
|
-
* The result contains at most one edge for each shared edge identity and
|
|
1920
|
-
* allocates new node and edge identifiers.
|
|
1921
|
-
*
|
|
1922
|
-
* **Example** (Finding shared structure)
|
|
1923
|
-
*
|
|
1924
|
-
* ```ts import.meta.vitest
|
|
1925
|
-
* import { Graph } from "effect"
|
|
1926
|
-
*
|
|
1927
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
1928
|
-
* const a = Graph.addNode(mutable, "A")
|
|
1929
|
-
* const b = Graph.addNode(mutable, "B")
|
|
1930
|
-
* Graph.addEdge(mutable, a, b, "shared")
|
|
1931
|
-
* })
|
|
1932
|
-
*
|
|
1933
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
1934
|
-
* const a = Graph.addNode(mutable, "A")
|
|
1935
|
-
* const b = Graph.addNode(mutable, "B")
|
|
1936
|
-
* Graph.addEdge(mutable, a, b, "shared")
|
|
1937
|
-
* })
|
|
1938
|
-
*
|
|
1939
|
-
* const result = Graph.intersection(left, right)
|
|
1940
|
-
*
|
|
1941
|
-
* Graph.nodeCount(result) // => 2
|
|
1942
|
-
* Graph.edgeCount(result) // => 1
|
|
1943
|
-
* ```
|
|
1944
|
-
*
|
|
1945
|
-
* @see {@link compose} for identity-based graph union
|
|
1946
|
-
* @stability unstable
|
|
1947
|
-
* @category set operations
|
|
1948
|
-
* @since 4.0.0
|
|
1949
|
-
*/
|
|
1950
|
-
N, /**
|
|
1951
|
-
* Returns the intersection of two graphs, matching nodes by identity.
|
|
1952
|
-
*
|
|
1953
|
-
* **When to use**
|
|
1954
|
-
*
|
|
1955
|
-
* Use when extracting nodes and edges that represent the same logical
|
|
1956
|
-
* structure in both graphs.
|
|
1957
|
-
*
|
|
1958
|
-
* **Details**
|
|
1959
|
-
*
|
|
1960
|
-
* Node data comes from `self`, and edge data comes from `that`. The result has
|
|
1961
|
-
* the same graph kind as `self`. Throws a `GraphError` when the graph kinds do
|
|
1962
|
-
* not match. `nodeIdentity` and `edgeIdentity` default to the complete node and
|
|
1963
|
-
* edge data. Edge identity also includes the endpoint identities.
|
|
1964
|
-
*
|
|
1965
|
-
* `G1 ∩ G2 = {V1 ∩ V2, E1 ∩ E2}`
|
|
1966
|
-
*
|
|
1967
|
-
* **Gotchas**
|
|
1968
|
-
*
|
|
1969
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
1970
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
1971
|
-
* The result contains at most one edge for each shared edge identity and
|
|
1972
|
-
* allocates new node and edge identifiers.
|
|
1973
|
-
*
|
|
1974
|
-
* **Example** (Finding shared structure)
|
|
1975
|
-
*
|
|
1976
|
-
* ```ts import.meta.vitest
|
|
1977
|
-
* import { Graph } from "effect"
|
|
1978
|
-
*
|
|
1979
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
1980
|
-
* const a = Graph.addNode(mutable, "A")
|
|
1981
|
-
* const b = Graph.addNode(mutable, "B")
|
|
1982
|
-
* Graph.addEdge(mutable, a, b, "shared")
|
|
1983
|
-
* })
|
|
1984
|
-
*
|
|
1985
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
1986
|
-
* const a = Graph.addNode(mutable, "A")
|
|
1987
|
-
* const b = Graph.addNode(mutable, "B")
|
|
1988
|
-
* Graph.addEdge(mutable, a, b, "shared")
|
|
1989
|
-
* })
|
|
1990
|
-
*
|
|
1991
|
-
* const result = Graph.intersection(left, right)
|
|
1992
|
-
*
|
|
1993
|
-
* Graph.nodeCount(result) // => 2
|
|
1994
|
-
* Graph.edgeCount(result) // => 1
|
|
1995
|
-
* ```
|
|
1996
|
-
*
|
|
1997
|
-
* @see {@link compose} for identity-based graph union
|
|
1998
|
-
* @stability unstable
|
|
1999
|
-
* @category set operations
|
|
2000
|
-
* @since 4.0.0
|
|
2001
|
-
*/
|
|
2002
|
-
E>((mutable) => {
|
|
2003
|
-
const indexByIdentity = addNodesByIdentity(mutable, nodes)
|
|
2004
|
-
|
|
2005
|
-
for (const [identity, data] of thatEdges) {
|
|
2006
|
-
if (MutableHashMap.has(selfEdges, identity)) {
|
|
2007
|
-
addEdgeByIdentity(mutable, indexByIdentity, identity, data)
|
|
2008
|
-
}
|
|
2009
|
-
}
|
|
2010
|
-
});
|
|
2011
|
-
})
|
|
2012
|
-
|
|
2013
|
-
/**
|
|
2014
|
-
* Returns `self` without edges also present in `that`.
|
|
2015
|
-
*
|
|
2016
|
-
* **When to use**
|
|
2017
|
-
*
|
|
2018
|
-
* Use when retaining all logical nodes from one graph while removing edge
|
|
2019
|
-
* relationships also represented by another graph.
|
|
2020
|
-
*
|
|
2021
|
-
* **Details**
|
|
2022
|
-
*
|
|
2023
|
-
* All nodes from `self` are preserved. Edges are matched by endpoint and edge
|
|
2024
|
-
* identities. The result has the same graph kind as `self`. Throws a
|
|
2025
|
-
* `GraphError` when the graph kinds do not match. `nodeIdentity` and
|
|
2026
|
-
* `edgeIdentity` default to the complete node and edge data.
|
|
2027
|
-
*
|
|
2028
|
-
* `G1 \ G2 = {V1, E1 \ E2}`
|
|
2029
|
-
*
|
|
2030
|
-
* **Gotchas**
|
|
2031
|
-
*
|
|
2032
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
2033
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
2034
|
-
* If `that` contains an edge identity, every parallel edge with that identity
|
|
2035
|
-
* is removed from `self`. The result allocates new node and edge identifiers.
|
|
2036
|
-
*
|
|
2037
|
-
* **Example** (Removing shared edges)
|
|
2038
|
-
*
|
|
2039
|
-
* ```ts import.meta.vitest
|
|
2040
|
-
* import { Graph } from "effect"
|
|
2041
|
-
*
|
|
2042
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
2043
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2044
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2045
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2046
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2047
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2048
|
-
* })
|
|
2049
|
-
*
|
|
2050
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
2051
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2052
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2053
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2054
|
-
* })
|
|
2055
|
-
*
|
|
2056
|
-
* const result = Graph.difference(left, right)
|
|
2057
|
-
*
|
|
2058
|
-
* Graph.nodeCount(result) // => 3
|
|
2059
|
-
* Graph.edgeCount(result) // => 1
|
|
2060
|
-
* ```
|
|
2061
|
-
*
|
|
2062
|
-
* @see {@link symmetricDifference} for retaining edges unique to either graph
|
|
2063
|
-
* @stability unstable
|
|
2064
|
-
* @category set operations
|
|
2065
|
-
* @since 4.0.0
|
|
2066
|
-
*/
|
|
2067
|
-
export const difference: {
|
|
2068
|
-
/**
|
|
2069
|
-
* Returns `self` without edges also present in `that`.
|
|
2070
|
-
*
|
|
2071
|
-
* **When to use**
|
|
2072
|
-
*
|
|
2073
|
-
* Use when retaining all logical nodes from one graph while removing edge
|
|
2074
|
-
* relationships also represented by another graph.
|
|
2075
|
-
*
|
|
2076
|
-
* **Details**
|
|
2077
|
-
*
|
|
2078
|
-
* All nodes from `self` are preserved. Edges are matched by endpoint and edge
|
|
2079
|
-
* identities. The result has the same graph kind as `self`. Throws a
|
|
2080
|
-
* `GraphError` when the graph kinds do not match. `nodeIdentity` and
|
|
2081
|
-
* `edgeIdentity` default to the complete node and edge data.
|
|
2082
|
-
*
|
|
2083
|
-
* `G1 \ G2 = {V1, E1 \ E2}`
|
|
2084
|
-
*
|
|
2085
|
-
* **Gotchas**
|
|
2086
|
-
*
|
|
2087
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
2088
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
2089
|
-
* If `that` contains an edge identity, every parallel edge with that identity
|
|
2090
|
-
* is removed from `self`. The result allocates new node and edge identifiers.
|
|
2091
|
-
*
|
|
2092
|
-
* **Example** (Removing shared edges)
|
|
2093
|
-
*
|
|
2094
|
-
* ```ts import.meta.vitest
|
|
2095
|
-
* import { Graph } from "effect"
|
|
2096
|
-
*
|
|
2097
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
2098
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2099
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2100
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2101
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2102
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2103
|
-
* })
|
|
2104
|
-
*
|
|
2105
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
2106
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2107
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2108
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2109
|
-
* })
|
|
2110
|
-
*
|
|
2111
|
-
* const result = Graph.difference(left, right)
|
|
2112
|
-
*
|
|
2113
|
-
* Graph.nodeCount(result) // => 3
|
|
2114
|
-
* Graph.edgeCount(result) // => 1
|
|
2115
|
-
* ```
|
|
2116
|
-
*
|
|
2117
|
-
* @see {@link symmetricDifference} for retaining edges unique to either graph
|
|
2118
|
-
* @stability unstable
|
|
2119
|
-
* @category set operations
|
|
2120
|
-
* @since 4.0.0
|
|
2121
|
-
*/
|
|
2122
|
-
<N, E, T extends Kind = "directed", NI = N, EI = E>(that: Graph<N, E, T>, options?: IdentityOptions<N, E, NI, EI>): (self: Graph<N, E, NoInfer<T>>) => Graph<N, E, T>
|
|
2123
|
-
/**
|
|
2124
|
-
* Returns `self` without edges also present in `that`.
|
|
2125
|
-
*
|
|
2126
|
-
* **When to use**
|
|
2127
|
-
*
|
|
2128
|
-
* Use when retaining all logical nodes from one graph while removing edge
|
|
2129
|
-
* relationships also represented by another graph.
|
|
2130
|
-
*
|
|
2131
|
-
* **Details**
|
|
2132
|
-
*
|
|
2133
|
-
* All nodes from `self` are preserved. Edges are matched by endpoint and edge
|
|
2134
|
-
* identities. The result has the same graph kind as `self`. Throws a
|
|
2135
|
-
* `GraphError` when the graph kinds do not match. `nodeIdentity` and
|
|
2136
|
-
* `edgeIdentity` default to the complete node and edge data.
|
|
2137
|
-
*
|
|
2138
|
-
* `G1 \ G2 = {V1, E1 \ E2}`
|
|
2139
|
-
*
|
|
2140
|
-
* **Gotchas**
|
|
2141
|
-
*
|
|
2142
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
2143
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
2144
|
-
* If `that` contains an edge identity, every parallel edge with that identity
|
|
2145
|
-
* is removed from `self`. The result allocates new node and edge identifiers.
|
|
2146
|
-
*
|
|
2147
|
-
* **Example** (Removing shared edges)
|
|
2148
|
-
*
|
|
2149
|
-
* ```ts import.meta.vitest
|
|
2150
|
-
* import { Graph } from "effect"
|
|
2151
|
-
*
|
|
2152
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
2153
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2154
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2155
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2156
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2157
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2158
|
-
* })
|
|
2159
|
-
*
|
|
2160
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
2161
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2162
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2163
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2164
|
-
* })
|
|
2165
|
-
*
|
|
2166
|
-
* const result = Graph.difference(left, right)
|
|
2167
|
-
*
|
|
2168
|
-
* Graph.nodeCount(result) // => 3
|
|
2169
|
-
* Graph.edgeCount(result) // => 1
|
|
2170
|
-
* ```
|
|
2171
|
-
*
|
|
2172
|
-
* @see {@link symmetricDifference} for retaining edges unique to either graph
|
|
1644
|
+
* @see {@link symmetricDifference} for retaining edges unique to either graph
|
|
2173
1645
|
* @stability unstable
|
|
2174
1646
|
* @category set operations
|
|
2175
1647
|
* @since 4.0.0
|
|
@@ -2191,116 +1663,8 @@ export const difference: {
|
|
|
2191
1663
|
const selfMaps = buildNodeMaps(self, getNodeIdentity)
|
|
2192
1664
|
const thatMaps = buildNodeMaps(that, getNodeIdentity)
|
|
2193
1665
|
const thatEdges = buildEdgeMap(that, thatMaps, getEdgeIdentity)
|
|
2194
|
-
|
|
2195
|
-
return make(self.type)
|
|
2196
|
-
* Returns `self` without edges also present in `that`.
|
|
2197
|
-
*
|
|
2198
|
-
* **When to use**
|
|
2199
|
-
*
|
|
2200
|
-
* Use when retaining all logical nodes from one graph while removing edge
|
|
2201
|
-
* relationships also represented by another graph.
|
|
2202
|
-
*
|
|
2203
|
-
* **Details**
|
|
2204
|
-
*
|
|
2205
|
-
* All nodes from `self` are preserved. Edges are matched by endpoint and edge
|
|
2206
|
-
* identities. The result has the same graph kind as `self`. Throws a
|
|
2207
|
-
* `GraphError` when the graph kinds do not match. `nodeIdentity` and
|
|
2208
|
-
* `edgeIdentity` default to the complete node and edge data.
|
|
2209
|
-
*
|
|
2210
|
-
* `G1 \ G2 = {V1, E1 \ E2}`
|
|
2211
|
-
*
|
|
2212
|
-
* **Gotchas**
|
|
2213
|
-
*
|
|
2214
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
2215
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
2216
|
-
* If `that` contains an edge identity, every parallel edge with that identity
|
|
2217
|
-
* is removed from `self`. The result allocates new node and edge identifiers.
|
|
2218
|
-
*
|
|
2219
|
-
* **Example** (Removing shared edges)
|
|
2220
|
-
*
|
|
2221
|
-
* ```ts import.meta.vitest
|
|
2222
|
-
* import { Graph } from "effect"
|
|
2223
|
-
*
|
|
2224
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
2225
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2226
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2227
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2228
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2229
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2230
|
-
* })
|
|
2231
|
-
*
|
|
2232
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
2233
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2234
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2235
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2236
|
-
* })
|
|
2237
|
-
*
|
|
2238
|
-
* const result = Graph.difference(left, right)
|
|
2239
|
-
*
|
|
2240
|
-
* Graph.nodeCount(result) // => 3
|
|
2241
|
-
* Graph.edgeCount(result) // => 1
|
|
2242
|
-
* ```
|
|
2243
|
-
*
|
|
2244
|
-
* @see {@link symmetricDifference} for retaining edges unique to either graph
|
|
2245
|
-
* @stability unstable
|
|
2246
|
-
* @category set operations
|
|
2247
|
-
* @since 4.0.0
|
|
2248
|
-
*/
|
|
2249
|
-
N, /**
|
|
2250
|
-
* Returns `self` without edges also present in `that`.
|
|
2251
|
-
*
|
|
2252
|
-
* **When to use**
|
|
2253
|
-
*
|
|
2254
|
-
* Use when retaining all logical nodes from one graph while removing edge
|
|
2255
|
-
* relationships also represented by another graph.
|
|
2256
|
-
*
|
|
2257
|
-
* **Details**
|
|
2258
|
-
*
|
|
2259
|
-
* All nodes from `self` are preserved. Edges are matched by endpoint and edge
|
|
2260
|
-
* identities. The result has the same graph kind as `self`. Throws a
|
|
2261
|
-
* `GraphError` when the graph kinds do not match. `nodeIdentity` and
|
|
2262
|
-
* `edgeIdentity` default to the complete node and edge data.
|
|
2263
|
-
*
|
|
2264
|
-
* `G1 \ G2 = {V1, E1 \ E2}`
|
|
2265
|
-
*
|
|
2266
|
-
* **Gotchas**
|
|
2267
|
-
*
|
|
2268
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
2269
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
2270
|
-
* If `that` contains an edge identity, every parallel edge with that identity
|
|
2271
|
-
* is removed from `self`. The result allocates new node and edge identifiers.
|
|
2272
|
-
*
|
|
2273
|
-
* **Example** (Removing shared edges)
|
|
2274
|
-
*
|
|
2275
|
-
* ```ts import.meta.vitest
|
|
2276
|
-
* import { Graph } from "effect"
|
|
2277
|
-
*
|
|
2278
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
2279
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2280
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2281
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2282
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2283
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2284
|
-
* })
|
|
2285
|
-
*
|
|
2286
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
2287
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2288
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2289
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2290
|
-
* })
|
|
2291
|
-
*
|
|
2292
|
-
* const result = Graph.difference(left, right)
|
|
2293
|
-
*
|
|
2294
|
-
* Graph.nodeCount(result) // => 3
|
|
2295
|
-
* Graph.edgeCount(result) // => 1
|
|
2296
|
-
* ```
|
|
2297
|
-
*
|
|
2298
|
-
* @see {@link symmetricDifference} for retaining edges unique to either graph
|
|
2299
|
-
* @stability unstable
|
|
2300
|
-
* @category set operations
|
|
2301
|
-
* @since 4.0.0
|
|
2302
|
-
*/
|
|
2303
|
-
E>((mutable) => {
|
|
1666
|
+
|
|
1667
|
+
return make(self.type)<N, E>((mutable) => {
|
|
2304
1668
|
const indexByIdentity = addNodesByIdentity(mutable, selfMaps.byIdentity)
|
|
2305
1669
|
|
|
2306
1670
|
for (const edge of selfImpl.edges.values()) {
|
|
@@ -2311,7 +1675,7 @@ export const difference: {
|
|
|
2311
1675
|
addEdgeByIdentity(mutable, indexByIdentity, edgeIdentity, edge.data)
|
|
2312
1676
|
}
|
|
2313
1677
|
}
|
|
2314
|
-
})
|
|
1678
|
+
})
|
|
2315
1679
|
})
|
|
2316
1680
|
|
|
2317
1681
|
/**
|
|
@@ -2371,264 +1735,8 @@ export const difference: {
|
|
|
2371
1735
|
* @category set operations
|
|
2372
1736
|
* @since 4.0.0
|
|
2373
1737
|
*/
|
|
2374
|
-
export const symmetricDifference: {
|
|
2375
|
-
/**
|
|
2376
|
-
* Returns edges present in exactly one of two graphs.
|
|
2377
|
-
*
|
|
2378
|
-
* **When to use**
|
|
2379
|
-
*
|
|
2380
|
-
* Use when comparing graphs and retaining relationships unique to either one.
|
|
2381
|
-
*
|
|
2382
|
-
* **Details**
|
|
2383
|
-
*
|
|
2384
|
-
* Keeps nodes from both graphs. Overlapping nodes use data from `that`. The
|
|
2385
|
-
* result has the same graph kind as `self`. Throws a `GraphError` when the
|
|
2386
|
-
* graph kinds do not match. `nodeIdentity` and `edgeIdentity` default to the
|
|
2387
|
-
* complete node and edge data. Edge identity also includes the endpoint
|
|
2388
|
-
* identities.
|
|
2389
|
-
*
|
|
2390
|
-
* `G1 Δ G2 = {V1 ∪ V2, (E1 ∪ E2) \ (E1 ∩ E2)}`
|
|
2391
|
-
*
|
|
2392
|
-
* **Gotchas**
|
|
2393
|
-
*
|
|
2394
|
-
* Edges with different projected identities are distinct.
|
|
2395
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
2396
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
2397
|
-
* Parallel edges with equal identities are coalesced before the graphs are
|
|
2398
|
-
* compared. The result allocates new node and edge identifiers.
|
|
2399
|
-
*
|
|
2400
|
-
* **Example** (Finding differing edges)
|
|
2401
|
-
*
|
|
2402
|
-
* ```ts import.meta.vitest
|
|
2403
|
-
* import { Graph } from "effect"
|
|
2404
|
-
*
|
|
2405
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
2406
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2407
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2408
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2409
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2410
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2411
|
-
* })
|
|
2412
|
-
*
|
|
2413
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
2414
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2415
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2416
|
-
* const d = Graph.addNode(mutable, "D")
|
|
2417
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2418
|
-
* Graph.addEdge(mutable, c, d, "C-D")
|
|
2419
|
-
* })
|
|
2420
|
-
*
|
|
2421
|
-
* const result = Graph.symmetricDifference(left, right)
|
|
2422
|
-
*
|
|
2423
|
-
* Graph.nodeCount(result) // => 4
|
|
2424
|
-
* Graph.edgeCount(result) // => 2
|
|
2425
|
-
* ```
|
|
2426
|
-
*
|
|
2427
|
-
* @see {@link difference} for removing only the edges found in another graph
|
|
2428
|
-
* @stability unstable
|
|
2429
|
-
* @category set operations
|
|
2430
|
-
* @since 4.0.0
|
|
2431
|
-
*/
|
|
2432
|
-
<N, E, T extends Kind = "directed", NI = N, EI = E>(that: Graph<N, E, T>, options?: IdentityOptions<N, E, NI, EI>): (self: Graph<N, E, NoInfer<T>>) => Graph<N, E, T>
|
|
2433
|
-
/**
|
|
2434
|
-
* Returns edges present in exactly one of two graphs.
|
|
2435
|
-
*
|
|
2436
|
-
* **When to use**
|
|
2437
|
-
*
|
|
2438
|
-
* Use when comparing graphs and retaining relationships unique to either one.
|
|
2439
|
-
*
|
|
2440
|
-
* **Details**
|
|
2441
|
-
*
|
|
2442
|
-
* Keeps nodes from both graphs. Overlapping nodes use data from `that`. The
|
|
2443
|
-
* result has the same graph kind as `self`. Throws a `GraphError` when the
|
|
2444
|
-
* graph kinds do not match. `nodeIdentity` and `edgeIdentity` default to the
|
|
2445
|
-
* complete node and edge data. Edge identity also includes the endpoint
|
|
2446
|
-
* identities.
|
|
2447
|
-
*
|
|
2448
|
-
* `G1 Δ G2 = {V1 ∪ V2, (E1 ∪ E2) \ (E1 ∩ E2)}`
|
|
2449
|
-
*
|
|
2450
|
-
* **Gotchas**
|
|
2451
|
-
*
|
|
2452
|
-
* Edges with different projected identities are distinct.
|
|
2453
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
2454
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
2455
|
-
* Parallel edges with equal identities are coalesced before the graphs are
|
|
2456
|
-
* compared. The result allocates new node and edge identifiers.
|
|
2457
|
-
*
|
|
2458
|
-
* **Example** (Finding differing edges)
|
|
2459
|
-
*
|
|
2460
|
-
* ```ts import.meta.vitest
|
|
2461
|
-
* import { Graph } from "effect"
|
|
2462
|
-
*
|
|
2463
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
2464
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2465
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2466
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2467
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2468
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2469
|
-
* })
|
|
2470
|
-
*
|
|
2471
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
2472
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2473
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2474
|
-
* const d = Graph.addNode(mutable, "D")
|
|
2475
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2476
|
-
* Graph.addEdge(mutable, c, d, "C-D")
|
|
2477
|
-
* })
|
|
2478
|
-
*
|
|
2479
|
-
* const result = Graph.symmetricDifference(left, right)
|
|
2480
|
-
*
|
|
2481
|
-
* Graph.nodeCount(result) // => 4
|
|
2482
|
-
* Graph.edgeCount(result) // => 2
|
|
2483
|
-
* ```
|
|
2484
|
-
*
|
|
2485
|
-
* @see {@link difference} for removing only the edges found in another graph
|
|
2486
|
-
* @stability unstable
|
|
2487
|
-
* @category set operations
|
|
2488
|
-
* @since 4.0.0
|
|
2489
|
-
*/
|
|
2490
|
-
<N, E, T extends Kind = "directed", NI = N, EI = E>(
|
|
2491
|
-
self: Graph<N, E, T>,
|
|
2492
|
-
that: Graph<N, E, NoInfer<T>>,
|
|
2493
|
-
options?: IdentityOptions<N, E, NI, EI>
|
|
2494
|
-
): Graph<N, E, T>
|
|
2495
|
-
} = dual((args) => isGraph(args[0]) && isGraph(args[1]), <N, E, T extends Kind, NI, EI>(
|
|
2496
|
-
self: Graph<N, E, T>,
|
|
2497
|
-
that: Graph<N, E, T>,
|
|
2498
|
-
options?: IdentityOptions<N, E, NI, EI>
|
|
2499
|
-
): Graph<N, E, T> => {
|
|
2500
|
-
assertSameKind(self, that)
|
|
2501
|
-
const getNodeIdentity = options?.nodeIdentity ?? ((node: N) => node as unknown as NI)
|
|
2502
|
-
const getEdgeIdentity = options?.edgeIdentity ?? ((edge: E) => edge as unknown as EI)
|
|
2503
|
-
const selfMaps = buildNodeMaps(self, getNodeIdentity)
|
|
2504
|
-
const thatMaps = buildNodeMaps(that, getNodeIdentity)
|
|
2505
|
-
const nodes = MutableHashMap.empty</**
|
|
2506
|
-
* Returns edges present in exactly one of two graphs.
|
|
2507
|
-
*
|
|
2508
|
-
* **When to use**
|
|
2509
|
-
*
|
|
2510
|
-
* Use when comparing graphs and retaining relationships unique to either one.
|
|
2511
|
-
*
|
|
2512
|
-
* **Details**
|
|
2513
|
-
*
|
|
2514
|
-
* Keeps nodes from both graphs. Overlapping nodes use data from `that`. The
|
|
2515
|
-
* result has the same graph kind as `self`. Throws a `GraphError` when the
|
|
2516
|
-
* graph kinds do not match. `nodeIdentity` and `edgeIdentity` default to the
|
|
2517
|
-
* complete node and edge data. Edge identity also includes the endpoint
|
|
2518
|
-
* identities.
|
|
2519
|
-
*
|
|
2520
|
-
* `G1 Δ G2 = {V1 ∪ V2, (E1 ∪ E2) \ (E1 ∩ E2)}`
|
|
2521
|
-
*
|
|
2522
|
-
* **Gotchas**
|
|
2523
|
-
*
|
|
2524
|
-
* Edges with different projected identities are distinct.
|
|
2525
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
2526
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
2527
|
-
* Parallel edges with equal identities are coalesced before the graphs are
|
|
2528
|
-
* compared. The result allocates new node and edge identifiers.
|
|
2529
|
-
*
|
|
2530
|
-
* **Example** (Finding differing edges)
|
|
2531
|
-
*
|
|
2532
|
-
* ```ts import.meta.vitest
|
|
2533
|
-
* import { Graph } from "effect"
|
|
2534
|
-
*
|
|
2535
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
2536
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2537
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2538
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2539
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2540
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2541
|
-
* })
|
|
2542
|
-
*
|
|
2543
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
2544
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2545
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2546
|
-
* const d = Graph.addNode(mutable, "D")
|
|
2547
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2548
|
-
* Graph.addEdge(mutable, c, d, "C-D")
|
|
2549
|
-
* })
|
|
2550
|
-
*
|
|
2551
|
-
* const result = Graph.symmetricDifference(left, right)
|
|
2552
|
-
*
|
|
2553
|
-
* Graph.nodeCount(result) // => 4
|
|
2554
|
-
* Graph.edgeCount(result) // => 2
|
|
2555
|
-
* ```
|
|
2556
|
-
*
|
|
2557
|
-
* @see {@link difference} for removing only the edges found in another graph
|
|
2558
|
-
* @stability unstable
|
|
2559
|
-
* @category set operations
|
|
2560
|
-
* @since 4.0.0
|
|
2561
|
-
*/
|
|
2562
|
-
NI, /**
|
|
2563
|
-
* Returns edges present in exactly one of two graphs.
|
|
2564
|
-
*
|
|
2565
|
-
* **When to use**
|
|
2566
|
-
*
|
|
2567
|
-
* Use when comparing graphs and retaining relationships unique to either one.
|
|
2568
|
-
*
|
|
2569
|
-
* **Details**
|
|
2570
|
-
*
|
|
2571
|
-
* Keeps nodes from both graphs. Overlapping nodes use data from `that`. The
|
|
2572
|
-
* result has the same graph kind as `self`. Throws a `GraphError` when the
|
|
2573
|
-
* graph kinds do not match. `nodeIdentity` and `edgeIdentity` default to the
|
|
2574
|
-
* complete node and edge data. Edge identity also includes the endpoint
|
|
2575
|
-
* identities.
|
|
2576
|
-
*
|
|
2577
|
-
* `G1 Δ G2 = {V1 ∪ V2, (E1 ∪ E2) \ (E1 ∩ E2)}`
|
|
2578
|
-
*
|
|
2579
|
-
* **Gotchas**
|
|
2580
|
-
*
|
|
2581
|
-
* Edges with different projected identities are distinct.
|
|
2582
|
-
* Nodes with equal identities in one input graph are coalesced. The last node
|
|
2583
|
-
* supplies the data, and redirected edges can collapse or become self-loops.
|
|
2584
|
-
* Parallel edges with equal identities are coalesced before the graphs are
|
|
2585
|
-
* compared. The result allocates new node and edge identifiers.
|
|
2586
|
-
*
|
|
2587
|
-
* **Example** (Finding differing edges)
|
|
2588
|
-
*
|
|
2589
|
-
* ```ts import.meta.vitest
|
|
2590
|
-
* import { Graph } from "effect"
|
|
2591
|
-
*
|
|
2592
|
-
* const left = Graph.directed<string, string>((mutable) => {
|
|
2593
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2594
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2595
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2596
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2597
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2598
|
-
* })
|
|
2599
|
-
*
|
|
2600
|
-
* const right = Graph.directed<string, string>((mutable) => {
|
|
2601
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2602
|
-
* const c = Graph.addNode(mutable, "C")
|
|
2603
|
-
* const d = Graph.addNode(mutable, "D")
|
|
2604
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
2605
|
-
* Graph.addEdge(mutable, c, d, "C-D")
|
|
2606
|
-
* })
|
|
2607
|
-
*
|
|
2608
|
-
* const result = Graph.symmetricDifference(left, right)
|
|
2609
|
-
*
|
|
2610
|
-
* Graph.nodeCount(result) // => 4
|
|
2611
|
-
* Graph.edgeCount(result) // => 2
|
|
2612
|
-
* ```
|
|
2613
|
-
*
|
|
2614
|
-
* @see {@link difference} for removing only the edges found in another graph
|
|
2615
|
-
* @stability unstable
|
|
2616
|
-
* @category set operations
|
|
2617
|
-
* @since 4.0.0
|
|
2618
|
-
*/
|
|
2619
|
-
N>()
|
|
2620
|
-
const selfEdges = buildEdgeMap(self, selfMaps, getEdgeIdentity)
|
|
2621
|
-
const thatEdges = buildEdgeMap(that, thatMaps, getEdgeIdentity)
|
|
2622
|
-
|
|
2623
|
-
for (const [identity, data] of selfMaps.byIdentity) {
|
|
2624
|
-
MutableHashMap.set(nodes, identity, data)
|
|
2625
|
-
}
|
|
2626
|
-
|
|
2627
|
-
for (const [identity, data] of thatMaps.byIdentity) {
|
|
2628
|
-
MutableHashMap.set(nodes, identity, data)
|
|
2629
|
-
}
|
|
2630
|
-
|
|
2631
|
-
return make(self.type)</**
|
|
1738
|
+
export const symmetricDifference: {
|
|
1739
|
+
/**
|
|
2632
1740
|
* Returns edges present in exactly one of two graphs.
|
|
2633
1741
|
*
|
|
2634
1742
|
* **When to use**
|
|
@@ -2685,7 +1793,8 @@ export const symmetricDifference: {
|
|
|
2685
1793
|
* @category set operations
|
|
2686
1794
|
* @since 4.0.0
|
|
2687
1795
|
*/
|
|
2688
|
-
N,
|
|
1796
|
+
<N, E, T extends Kind = "directed", NI = N, EI = E>(that: Graph<N, E, T>, options?: IdentityOptions<N, E, NI, EI>): (self: Graph<N, E, NoInfer<T>>) => Graph<N, E, T>
|
|
1797
|
+
/**
|
|
2689
1798
|
* Returns edges present in exactly one of two graphs.
|
|
2690
1799
|
*
|
|
2691
1800
|
* **When to use**
|
|
@@ -2742,7 +1851,34 @@ export const symmetricDifference: {
|
|
|
2742
1851
|
* @category set operations
|
|
2743
1852
|
* @since 4.0.0
|
|
2744
1853
|
*/
|
|
2745
|
-
E>(
|
|
1854
|
+
<N, E, T extends Kind = "directed", NI = N, EI = E>(
|
|
1855
|
+
self: Graph<N, E, T>,
|
|
1856
|
+
that: Graph<N, E, NoInfer<T>>,
|
|
1857
|
+
options?: IdentityOptions<N, E, NI, EI>
|
|
1858
|
+
): Graph<N, E, T>
|
|
1859
|
+
} = dual((args) => isGraph(args[0]) && isGraph(args[1]), <N, E, T extends Kind, NI, EI>(
|
|
1860
|
+
self: Graph<N, E, T>,
|
|
1861
|
+
that: Graph<N, E, T>,
|
|
1862
|
+
options?: IdentityOptions<N, E, NI, EI>
|
|
1863
|
+
): Graph<N, E, T> => {
|
|
1864
|
+
assertSameKind(self, that)
|
|
1865
|
+
const getNodeIdentity = options?.nodeIdentity ?? ((node: N) => node as unknown as NI)
|
|
1866
|
+
const getEdgeIdentity = options?.edgeIdentity ?? ((edge: E) => edge as unknown as EI)
|
|
1867
|
+
const selfMaps = buildNodeMaps(self, getNodeIdentity)
|
|
1868
|
+
const thatMaps = buildNodeMaps(that, getNodeIdentity)
|
|
1869
|
+
const nodes = MutableHashMap.empty<NI, N>()
|
|
1870
|
+
const selfEdges = buildEdgeMap(self, selfMaps, getEdgeIdentity)
|
|
1871
|
+
const thatEdges = buildEdgeMap(that, thatMaps, getEdgeIdentity)
|
|
1872
|
+
|
|
1873
|
+
for (const [identity, data] of selfMaps.byIdentity) {
|
|
1874
|
+
MutableHashMap.set(nodes, identity, data)
|
|
1875
|
+
}
|
|
1876
|
+
|
|
1877
|
+
for (const [identity, data] of thatMaps.byIdentity) {
|
|
1878
|
+
MutableHashMap.set(nodes, identity, data)
|
|
1879
|
+
}
|
|
1880
|
+
|
|
1881
|
+
return make(self.type)<N, E>((mutable) => {
|
|
2746
1882
|
const indexByIdentity = addNodesByIdentity(mutable, nodes)
|
|
2747
1883
|
|
|
2748
1884
|
for (const [identity, data] of selfEdges) {
|
|
@@ -2756,7 +1892,7 @@ export const symmetricDifference: {
|
|
|
2756
1892
|
addEdgeByIdentity(mutable, indexByIdentity, identity, data)
|
|
2757
1893
|
}
|
|
2758
1894
|
}
|
|
2759
|
-
})
|
|
1895
|
+
})
|
|
2760
1896
|
})
|
|
2761
1897
|
|
|
2762
1898
|
/**
|
|
@@ -2899,93 +2035,7 @@ export const complement: {
|
|
|
2899
2035
|
const outgoing = csr.getOutgoing(cache)
|
|
2900
2036
|
const neighborMarks = new Uint32Array(cache.nodeIds.length)
|
|
2901
2037
|
|
|
2902
|
-
return make(self.type)
|
|
2903
|
-
* Returns the complement over the existing node set.
|
|
2904
|
-
*
|
|
2905
|
-
* **When to use**
|
|
2906
|
-
*
|
|
2907
|
-
* Use when materializing every relationship that is currently absent between
|
|
2908
|
-
* distinct nodes.
|
|
2909
|
-
*
|
|
2910
|
-
* **Details**
|
|
2911
|
-
*
|
|
2912
|
-
* Directed graphs add each missing ordered pair. Undirected graphs add each
|
|
2913
|
-
* missing unordered pair once. The `createEdge` function receives the source
|
|
2914
|
-
* and target node data for each added edge. The result has the same graph kind
|
|
2915
|
-
* as `self`.
|
|
2916
|
-
*
|
|
2917
|
-
* `G' = {V, ((V x V) without self-pairs) \ E}`
|
|
2918
|
-
*
|
|
2919
|
-
* **Gotchas**
|
|
2920
|
-
*
|
|
2921
|
-
* Self-loops are never created. If any edge already connects a pair, parallel
|
|
2922
|
-
* complement edges are not added. The result allocates new identifiers.
|
|
2923
|
-
*
|
|
2924
|
-
* **Example** (Finding missing relationships)
|
|
2925
|
-
*
|
|
2926
|
-
* ```ts import.meta.vitest
|
|
2927
|
-
* import { Graph } from "effect"
|
|
2928
|
-
*
|
|
2929
|
-
* const graph = Graph.directed<string, string>((mutable) => {
|
|
2930
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2931
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2932
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2933
|
-
* })
|
|
2934
|
-
*
|
|
2935
|
-
* const result = Graph.complement(graph, (source, target) => `${source}-${target}`)
|
|
2936
|
-
*
|
|
2937
|
-
* Graph.edgeCount(result) // => 1
|
|
2938
|
-
* ```
|
|
2939
|
-
*
|
|
2940
|
-
* @see {@link hasEdge} for testing one relationship
|
|
2941
|
-
* @stability unstable
|
|
2942
|
-
* @category set operations
|
|
2943
|
-
* @since 4.0.0
|
|
2944
|
-
*/
|
|
2945
|
-
N, /**
|
|
2946
|
-
* Returns the complement over the existing node set.
|
|
2947
|
-
*
|
|
2948
|
-
* **When to use**
|
|
2949
|
-
*
|
|
2950
|
-
* Use when materializing every relationship that is currently absent between
|
|
2951
|
-
* distinct nodes.
|
|
2952
|
-
*
|
|
2953
|
-
* **Details**
|
|
2954
|
-
*
|
|
2955
|
-
* Directed graphs add each missing ordered pair. Undirected graphs add each
|
|
2956
|
-
* missing unordered pair once. The `createEdge` function receives the source
|
|
2957
|
-
* and target node data for each added edge. The result has the same graph kind
|
|
2958
|
-
* as `self`.
|
|
2959
|
-
*
|
|
2960
|
-
* `G' = {V, ((V x V) without self-pairs) \ E}`
|
|
2961
|
-
*
|
|
2962
|
-
* **Gotchas**
|
|
2963
|
-
*
|
|
2964
|
-
* Self-loops are never created. If any edge already connects a pair, parallel
|
|
2965
|
-
* complement edges are not added. The result allocates new identifiers.
|
|
2966
|
-
*
|
|
2967
|
-
* **Example** (Finding missing relationships)
|
|
2968
|
-
*
|
|
2969
|
-
* ```ts import.meta.vitest
|
|
2970
|
-
* import { Graph } from "effect"
|
|
2971
|
-
*
|
|
2972
|
-
* const graph = Graph.directed<string, string>((mutable) => {
|
|
2973
|
-
* const a = Graph.addNode(mutable, "A")
|
|
2974
|
-
* const b = Graph.addNode(mutable, "B")
|
|
2975
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
2976
|
-
* })
|
|
2977
|
-
*
|
|
2978
|
-
* const result = Graph.complement(graph, (source, target) => `${source}-${target}`)
|
|
2979
|
-
*
|
|
2980
|
-
* Graph.edgeCount(result) // => 1
|
|
2981
|
-
* ```
|
|
2982
|
-
*
|
|
2983
|
-
* @see {@link hasEdge} for testing one relationship
|
|
2984
|
-
* @stability unstable
|
|
2985
|
-
* @category set operations
|
|
2986
|
-
* @since 4.0.0
|
|
2987
|
-
*/
|
|
2988
|
-
E>((mutable) => {
|
|
2038
|
+
return make(self.type)<N, E>((mutable) => {
|
|
2989
2039
|
const newIndices = new Uint32Array(cache.nodeIds.length)
|
|
2990
2040
|
|
|
2991
2041
|
for (let i = 0; i < cache.nodeIds.length; i++) {
|
|
@@ -3006,7 +2056,7 @@ export const complement: {
|
|
|
3006
2056
|
addEdge(mutable, newIndices[i], newIndices[j], createEdge(cache.nodeData[i] as N, cache.nodeData[j] as N))
|
|
3007
2057
|
}
|
|
3008
2058
|
}
|
|
3009
|
-
})
|
|
2059
|
+
})
|
|
3010
2060
|
})
|
|
3011
2061
|
|
|
3012
2062
|
/**
|
|
@@ -3180,97 +2230,7 @@ export const neighborhood: {
|
|
|
3180
2230
|
reached.add(index)
|
|
3181
2231
|
}
|
|
3182
2232
|
|
|
3183
|
-
return make(self.type)
|
|
3184
|
-
* Returns the induced subgraph containing nodes within a radius of a node.
|
|
3185
|
-
*
|
|
3186
|
-
* **When to use**
|
|
3187
|
-
*
|
|
3188
|
-
* Use when extracting a local reachable region around one node.
|
|
3189
|
-
*
|
|
3190
|
-
* **Details**
|
|
3191
|
-
*
|
|
3192
|
-
* The `radius` option is the maximum edge distance from `nodeIndex`, accepts
|
|
3193
|
-
* non-negative integers and `Infinity`, and defaults to `1`. Invalid radii
|
|
3194
|
-
* throw a `GraphError`. The `direction` option controls directed graph
|
|
3195
|
-
* traversal and defaults to `"outgoing"`. The result has the same graph kind
|
|
3196
|
-
* as `self` and keeps all original edges whose endpoints are both reached.
|
|
3197
|
-
* `"undirected"` ignores edge direction while finding reachable nodes.
|
|
3198
|
-
*
|
|
3199
|
-
* **Gotchas**
|
|
3200
|
-
*
|
|
3201
|
-
* Traversal chooses the nodes, then all original edges between reached nodes
|
|
3202
|
-
* are retained. The result is not merely a traversal tree, and it allocates new
|
|
3203
|
-
* node and edge identifiers.
|
|
3204
|
-
*
|
|
3205
|
-
* **Example** (Getting a local neighborhood)
|
|
3206
|
-
*
|
|
3207
|
-
* ```ts import.meta.vitest
|
|
3208
|
-
* import { Graph } from "effect"
|
|
3209
|
-
*
|
|
3210
|
-
* const graph = Graph.directed<string, string>((mutable) => {
|
|
3211
|
-
* const a = Graph.addNode(mutable, "A")
|
|
3212
|
-
* const b = Graph.addNode(mutable, "B")
|
|
3213
|
-
* const c = Graph.addNode(mutable, "C")
|
|
3214
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
3215
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
3216
|
-
* })
|
|
3217
|
-
*
|
|
3218
|
-
* const result = Graph.neighborhood(graph, 1, { radius: 1 })
|
|
3219
|
-
*
|
|
3220
|
-
* Graph.nodeCount(result) // => 2
|
|
3221
|
-
* ```
|
|
3222
|
-
*
|
|
3223
|
-
* @see {@link inducedSubgraph} for selecting nodes while preserving identifiers
|
|
3224
|
-
* @stability unstable
|
|
3225
|
-
* @category set operations
|
|
3226
|
-
* @since 4.0.0
|
|
3227
|
-
*/
|
|
3228
|
-
N, /**
|
|
3229
|
-
* Returns the induced subgraph containing nodes within a radius of a node.
|
|
3230
|
-
*
|
|
3231
|
-
* **When to use**
|
|
3232
|
-
*
|
|
3233
|
-
* Use when extracting a local reachable region around one node.
|
|
3234
|
-
*
|
|
3235
|
-
* **Details**
|
|
3236
|
-
*
|
|
3237
|
-
* The `radius` option is the maximum edge distance from `nodeIndex`, accepts
|
|
3238
|
-
* non-negative integers and `Infinity`, and defaults to `1`. Invalid radii
|
|
3239
|
-
* throw a `GraphError`. The `direction` option controls directed graph
|
|
3240
|
-
* traversal and defaults to `"outgoing"`. The result has the same graph kind
|
|
3241
|
-
* as `self` and keeps all original edges whose endpoints are both reached.
|
|
3242
|
-
* `"undirected"` ignores edge direction while finding reachable nodes.
|
|
3243
|
-
*
|
|
3244
|
-
* **Gotchas**
|
|
3245
|
-
*
|
|
3246
|
-
* Traversal chooses the nodes, then all original edges between reached nodes
|
|
3247
|
-
* are retained. The result is not merely a traversal tree, and it allocates new
|
|
3248
|
-
* node and edge identifiers.
|
|
3249
|
-
*
|
|
3250
|
-
* **Example** (Getting a local neighborhood)
|
|
3251
|
-
*
|
|
3252
|
-
* ```ts import.meta.vitest
|
|
3253
|
-
* import { Graph } from "effect"
|
|
3254
|
-
*
|
|
3255
|
-
* const graph = Graph.directed<string, string>((mutable) => {
|
|
3256
|
-
* const a = Graph.addNode(mutable, "A")
|
|
3257
|
-
* const b = Graph.addNode(mutable, "B")
|
|
3258
|
-
* const c = Graph.addNode(mutable, "C")
|
|
3259
|
-
* Graph.addEdge(mutable, a, b, "A-B")
|
|
3260
|
-
* Graph.addEdge(mutable, b, c, "B-C")
|
|
3261
|
-
* })
|
|
3262
|
-
*
|
|
3263
|
-
* const result = Graph.neighborhood(graph, 1, { radius: 1 })
|
|
3264
|
-
*
|
|
3265
|
-
* Graph.nodeCount(result) // => 2
|
|
3266
|
-
* ```
|
|
3267
|
-
*
|
|
3268
|
-
* @see {@link inducedSubgraph} for selecting nodes while preserving identifiers
|
|
3269
|
-
* @stability unstable
|
|
3270
|
-
* @category set operations
|
|
3271
|
-
* @since 4.0.0
|
|
3272
|
-
*/
|
|
3273
|
-
E>((mutable) => {
|
|
2233
|
+
return make(self.type)<N, E>((mutable) => {
|
|
3274
2234
|
const newIndexMap = new Map<NodeIndex, NodeIndex>()
|
|
3275
2235
|
|
|
3276
2236
|
for (const oldIndex of reached) {
|
|
@@ -3286,7 +2246,7 @@ export const neighborhood: {
|
|
|
3286
2246
|
}
|
|
3287
2247
|
}
|
|
3288
2248
|
}
|
|
3289
|
-
})
|
|
2249
|
+
})
|
|
3290
2250
|
})
|
|
3291
2251
|
|
|
3292
2252
|
/**
|
|
@@ -3475,59 +2435,7 @@ export const sum: {
|
|
|
3475
2435
|
<N, E, T extends Kind>(self: Graph<N, E, T>, that: Graph<N, E, NoInfer<T>>): Graph<N, E, T>
|
|
3476
2436
|
} = dual(2, <N, E, T extends Kind>(self: Graph<N, E, T>, that: Graph<N, E, T>): Graph<N, E, T> => {
|
|
3477
2437
|
assertSameKind(self, that)
|
|
3478
|
-
return make(self.type)
|
|
3479
|
-
* Returns the disjoint union of two graphs.
|
|
3480
|
-
*
|
|
3481
|
-
* **When to use**
|
|
3482
|
-
*
|
|
3483
|
-
* Use when combining graphs while keeping every node distinct, even when node
|
|
3484
|
-
* payloads are equal.
|
|
3485
|
-
*
|
|
3486
|
-
* **Details**
|
|
3487
|
-
*
|
|
3488
|
-
* Copies all nodes and edges from both graphs without merging equal node data.
|
|
3489
|
-
* The result has the same graph kind as `self`. Throws a `GraphError` when the
|
|
3490
|
-
* graph kinds do not match.
|
|
3491
|
-
*
|
|
3492
|
-
* `G1 + G2 = {disjoint V1 + V2, disjoint E1 + E2}`
|
|
3493
|
-
*
|
|
3494
|
-
* **Gotchas**
|
|
3495
|
-
*
|
|
3496
|
-
* All node and edge identifiers are newly allocated.
|
|
3497
|
-
*
|
|
3498
|
-
* @see {@link compose} for merging overlapping logical nodes by identity
|
|
3499
|
-
*
|
|
3500
|
-
* @stability unstable
|
|
3501
|
-
* @category set operations
|
|
3502
|
-
* @since 4.0.0
|
|
3503
|
-
*/
|
|
3504
|
-
N, /**
|
|
3505
|
-
* Returns the disjoint union of two graphs.
|
|
3506
|
-
*
|
|
3507
|
-
* **When to use**
|
|
3508
|
-
*
|
|
3509
|
-
* Use when combining graphs while keeping every node distinct, even when node
|
|
3510
|
-
* payloads are equal.
|
|
3511
|
-
*
|
|
3512
|
-
* **Details**
|
|
3513
|
-
*
|
|
3514
|
-
* Copies all nodes and edges from both graphs without merging equal node data.
|
|
3515
|
-
* The result has the same graph kind as `self`. Throws a `GraphError` when the
|
|
3516
|
-
* graph kinds do not match.
|
|
3517
|
-
*
|
|
3518
|
-
* `G1 + G2 = {disjoint V1 + V2, disjoint E1 + E2}`
|
|
3519
|
-
*
|
|
3520
|
-
* **Gotchas**
|
|
3521
|
-
*
|
|
3522
|
-
* All node and edge identifiers are newly allocated.
|
|
3523
|
-
*
|
|
3524
|
-
* @see {@link compose} for merging overlapping logical nodes by identity
|
|
3525
|
-
*
|
|
3526
|
-
* @stability unstable
|
|
3527
|
-
* @category set operations
|
|
3528
|
-
* @since 4.0.0
|
|
3529
|
-
*/
|
|
3530
|
-
E>((mutable) => {
|
|
2438
|
+
return make(self.type)<N, E>((mutable) => {
|
|
3531
2439
|
const copyInto = (graph: Graph<N, E, T>) => {
|
|
3532
2440
|
const impl = internal.toImpl(graph)
|
|
3533
2441
|
const indexMap = new Map<NodeIndex, NodeIndex>()
|
|
@@ -3547,7 +2455,7 @@ export const sum: {
|
|
|
3547
2455
|
|
|
3548
2456
|
copyInto(self)
|
|
3549
2457
|
copyInto(that)
|
|
3550
|
-
})
|
|
2458
|
+
})
|
|
3551
2459
|
})
|
|
3552
2460
|
|
|
3553
2461
|
// =============================================================================
|