effect 4.0.2 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +24 -0
- package/CLAUDE.md +24 -0
- package/ai-docs/package.json +2 -2
- package/ai-docs/src/52_graphql/10_basics.ts +111 -0
- package/ai-docs/src/52_graphql/20_testing.ts +45 -0
- package/ai-docs/src/52_graphql/30_batching.ts +116 -0
- package/ai-docs/src/52_graphql/40_aliased-batching.ts +122 -0
- package/ai-docs/src/52_graphql/50_errors-and-retries.ts +74 -0
- package/ai-docs/src/52_graphql/index.md +6 -0
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +12 -3
- package/dist/Context.js.map +1 -1
- package/dist/Crypto.d.ts +33 -5
- package/dist/Crypto.d.ts.map +1 -1
- package/dist/Crypto.js +8 -2
- package/dist/Crypto.js.map +1 -1
- package/dist/DateTime.d.ts +9 -6
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +9 -6
- package/dist/DateTime.js.map +1 -1
- package/dist/Duration.d.ts +6 -6
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +27 -8
- package/dist/Duration.js.map +1 -1
- package/dist/FileSystem.d.ts +44 -2
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js.map +1 -1
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +4 -10
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Scheduler.d.ts +9 -0
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +9 -0
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +481 -1
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +362 -4
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaGetter.d.ts +4 -0
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +52 -33
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +38 -17
- package/dist/Sink.js.map +1 -1
- package/dist/Stdio.d.ts +7 -1
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +1 -0
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +22 -11
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +21 -6
- package/dist/Stream.js.map +1 -1
- package/dist/Utils.js +8 -3
- package/dist/Utils.js.map +1 -1
- package/dist/ai/AnthropicStructuredOutput.js +0 -2
- package/dist/ai/AnthropicStructuredOutput.js.map +1 -1
- package/dist/ai/Chat.d.ts +2 -2
- package/dist/ai/Chat.d.ts.map +1 -1
- package/dist/ai/LanguageModel.d.ts +38 -7
- package/dist/ai/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +25 -7
- package/dist/ai/LanguageModel.js.map +1 -1
- package/dist/ai/McpServer.d.ts +61 -0
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +196 -44
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +28 -5
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +4 -3
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +5 -0
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +1 -0
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +27 -0
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +33 -10
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +6 -3
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +3 -3
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js +8 -5
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts +5 -4
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +3 -3
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Prompt.d.ts +17 -1
- package/dist/cli/Prompt.d.ts.map +1 -1
- package/dist/cli/Prompt.js +119 -114
- package/dist/cli/Prompt.js.map +1 -1
- package/dist/cli/internal/ansi.d.ts +0 -1
- package/dist/cli/internal/ansi.d.ts.map +1 -1
- package/dist/cli/internal/ansi.js +20 -3
- package/dist/cli/internal/ansi.js.map +1 -1
- package/dist/cli/internal/completions/powershell.d.ts +2 -0
- package/dist/cli/internal/completions/powershell.d.ts.map +1 -0
- package/dist/cli/internal/completions/powershell.js +273 -0
- package/dist/cli/internal/completions/powershell.js.map +1 -0
- package/dist/cli/internal/completions/zsh.js +3 -2
- package/dist/cli/internal/completions/zsh.js.map +1 -1
- package/dist/cli/internal/wizard.d.ts +3 -3
- package/dist/cli/internal/wizard.d.ts.map +1 -1
- package/dist/cli/internal/wizard.js +21 -18
- package/dist/cli/internal/wizard.js.map +1 -1
- package/dist/cluster/ClusterSchema.d.ts +28 -0
- package/dist/cluster/ClusterSchema.d.ts.map +1 -1
- package/dist/cluster/ClusterSchema.js +30 -0
- package/dist/cluster/ClusterSchema.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +56 -26
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +18 -3
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +31 -11
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +8 -2
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +187 -66
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/SqlMessageStorage.d.ts +59 -19
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +84 -55
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts +68 -19
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +191 -113
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +104 -37
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/encoding/Sse.d.ts +6 -0
- package/dist/encoding/Sse.d.ts.map +1 -1
- package/dist/encoding/Sse.js +62 -70
- package/dist/encoding/Sse.js.map +1 -1
- package/dist/graphql/GraphQL.d.ts +349 -0
- package/dist/graphql/GraphQL.d.ts.map +1 -0
- package/dist/graphql/GraphQL.js +207 -0
- package/dist/graphql/GraphQL.js.map +1 -0
- package/dist/graphql/GraphQLClient.d.ts +562 -0
- package/dist/graphql/GraphQLClient.d.ts.map +1 -0
- package/dist/graphql/GraphQLClient.js +498 -0
- package/dist/graphql/GraphQLClient.js.map +1 -0
- package/dist/graphql/GraphQLClientError.d.ts +445 -0
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -0
- package/dist/graphql/GraphQLClientError.js +479 -0
- package/dist/graphql/GraphQLClientError.js.map +1 -0
- package/dist/graphql/GraphQLGroup.d.ts +118 -0
- package/dist/graphql/GraphQLGroup.d.ts.map +1 -0
- package/dist/graphql/GraphQLGroup.js +109 -0
- package/dist/graphql/GraphQLGroup.js.map +1 -0
- package/dist/graphql/GraphQLMiddleware.d.ts +249 -0
- package/dist/graphql/GraphQLMiddleware.d.ts.map +1 -0
- package/dist/graphql/GraphQLMiddleware.js +130 -0
- package/dist/graphql/GraphQLMiddleware.js.map +1 -0
- package/dist/graphql/GraphQLProtocol.d.ts +731 -0
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -0
- package/dist/graphql/GraphQLProtocol.js +719 -0
- package/dist/graphql/GraphQLProtocol.js.map +1 -0
- package/dist/graphql/GraphQLResolver.d.ts +453 -0
- package/dist/graphql/GraphQLResolver.d.ts.map +1 -0
- package/dist/graphql/GraphQLResolver.js +552 -0
- package/dist/graphql/GraphQLResolver.js.map +1 -0
- package/dist/graphql/index.d.ts +40 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +41 -0
- package/dist/graphql/index.js.map +1 -0
- package/dist/http/FindMyWay/internal/router.js +3 -6
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/HttpClient.d.ts +21 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +63 -12
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpEffect.d.ts.map +1 -1
- package/dist/http/HttpEffect.js +14 -7
- package/dist/http/HttpEffect.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +31 -32
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts +35 -0
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +35 -0
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts +8 -6
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +27 -16
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpTraceContext.d.ts.map +1 -1
- package/dist/http/HttpTraceContext.js +4 -2
- package/dist/http/HttpTraceContext.js.map +1 -1
- package/dist/http/Multipart.d.ts.map +1 -1
- package/dist/http/Multipart.js +15 -1
- package/dist/http/Multipart.js.map +1 -1
- package/dist/http-api/HttpApiScalar.d.ts +5 -0
- package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
- package/dist/http-api/HttpApiScalar.js.map +1 -1
- package/dist/internal/dateTime.js +40 -35
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +19 -9
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/graphql.d.ts +2 -0
- package/dist/internal/graphql.d.ts.map +1 -0
- package/dist/internal/graphql.js +195 -0
- package/dist/internal/graphql.js.map +1 -0
- package/dist/internal/graphqlHeaders.d.ts +4 -0
- package/dist/internal/graphqlHeaders.d.ts.map +1 -0
- package/dist/internal/graphqlHeaders.js +11 -0
- package/dist/internal/graphqlHeaders.js.map +1 -0
- package/dist/internal/request.js +20 -1
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +4 -1
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +29 -5
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/net/AddressResolver.d.ts +145 -0
- package/dist/net/AddressResolver.d.ts.map +1 -0
- package/dist/net/AddressResolver.js +114 -0
- package/dist/net/AddressResolver.js.map +1 -0
- package/dist/net/Dns.d.ts +596 -0
- package/dist/net/Dns.d.ts.map +1 -0
- package/dist/net/Dns.js +549 -0
- package/dist/net/Dns.js.map +1 -0
- package/dist/net/Host.d.ts +369 -0
- package/dist/net/Host.d.ts.map +1 -0
- package/dist/net/Host.js +397 -0
- package/dist/net/Host.js.map +1 -0
- package/dist/net/IpInterface.d.ts +76 -3
- package/dist/net/IpInterface.d.ts.map +1 -1
- package/dist/net/IpInterface.js +53 -4
- package/dist/net/IpInterface.js.map +1 -1
- package/dist/net/IpNetwork.d.ts +82 -8
- package/dist/net/IpNetwork.d.ts.map +1 -1
- package/dist/net/IpNetwork.js +60 -4
- package/dist/net/IpNetwork.js.map +1 -1
- package/dist/net/NetAddress.d.ts +396 -35
- package/dist/net/NetAddress.d.ts.map +1 -1
- package/dist/net/NetAddress.js +358 -34
- package/dist/net/NetAddress.js.map +1 -1
- package/dist/net/index.d.ts +15 -0
- package/dist/net/index.d.ts.map +1 -1
- package/dist/net/index.js +15 -0
- package/dist/net/index.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +15 -21
- package/dist/observability/OtlpMetrics.js.map +1 -1
- package/dist/observability/PrometheusMetrics.js +1 -0
- package/dist/observability/PrometheusMetrics.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +32 -3
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +75 -16
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +22 -6
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +12 -5
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts +6 -0
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +78 -29
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/socket/DatagramSocket.d.ts +456 -0
- package/dist/socket/DatagramSocket.d.ts.map +1 -0
- package/dist/socket/DatagramSocket.js +535 -0
- package/dist/socket/DatagramSocket.js.map +1 -0
- package/dist/socket/Socket.d.ts +20 -1
- package/dist/socket/Socket.d.ts.map +1 -1
- package/dist/socket/Socket.js +9 -1
- package/dist/socket/Socket.js.map +1 -1
- package/dist/socket/index.d.ts +5 -0
- package/dist/socket/index.d.ts.map +1 -1
- package/dist/socket/index.js +5 -0
- package/dist/socket/index.js.map +1 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +7 -2
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +7 -1
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +31 -6
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/testing/TestCrypto.d.ts +73 -0
- package/dist/testing/TestCrypto.d.ts.map +1 -0
- package/dist/testing/TestCrypto.js +87 -0
- package/dist/testing/TestCrypto.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +5 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/workflow/DurableDeferred.d.ts +54 -0
- package/dist/workflow/DurableDeferred.d.ts.map +1 -1
- package/dist/workflow/DurableDeferred.js +108 -50
- package/dist/workflow/DurableDeferred.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts +24 -2
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +13 -3
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +6 -3
- package/src/Context.ts +12 -3
- package/src/Crypto.ts +43 -9
- package/src/DateTime.ts +9 -6
- package/src/Duration.ts +36 -16
- package/src/FileSystem.ts +48 -2
- package/src/RequestResolver.ts +4 -10
- package/src/Scheduler.ts +9 -0
- package/src/Schema.ts +677 -5
- package/src/SchemaGetter.ts +47 -35
- package/src/Sink.ts +45 -18
- package/src/Stdio.ts +9 -2
- package/src/Stream.ts +44 -15
- package/src/Utils.ts +8 -5
- package/src/ai/AnthropicStructuredOutput.ts +2 -2
- package/src/ai/Chat.ts +2 -2
- package/src/ai/LanguageModel.ts +96 -24
- package/src/ai/McpServer.ts +288 -94
- package/src/ai/Prompt.ts +24 -10
- package/src/ai/Response.ts +6 -3
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +5 -0
- package/src/ai/internal/mcpProtocol.ts +3 -0
- package/src/ai/internal/mcpRuntime.ts +2 -0
- package/src/cli/CliOutput.ts +33 -16
- package/src/cli/Command.ts +4 -3
- package/src/cli/Completions.ts +9 -6
- package/src/cli/GlobalFlag.ts +19 -11
- package/src/cli/Prompt.ts +159 -149
- package/src/cli/internal/ansi.ts +26 -3
- package/src/cli/internal/completions/powershell.ts +322 -0
- package/src/cli/internal/completions/zsh.ts +4 -2
- package/src/cli/internal/wizard.ts +34 -26
- package/src/cluster/ClusterSchema.ts +32 -0
- package/src/cluster/ClusterWorkflowEngine.ts +64 -36
- package/src/cluster/MessageStorage.ts +45 -14
- package/src/cluster/Runners.ts +8 -2
- package/src/cluster/Sharding.ts +219 -58
- package/src/cluster/SqlMessageStorage.ts +118 -84
- package/src/cluster/SqlRunnerStorage.ts +224 -128
- package/src/cluster/internal/entityManager.ts +151 -55
- package/src/encoding/Sse.ts +69 -79
- package/src/graphql/GraphQL.ts +494 -0
- package/src/graphql/GraphQLClient.ts +912 -0
- package/src/graphql/GraphQLClientError.ts +542 -0
- package/src/graphql/GraphQLGroup.ts +167 -0
- package/src/graphql/GraphQLMiddleware.ts +253 -0
- package/src/graphql/GraphQLProtocol.ts +1286 -0
- package/src/graphql/GraphQLResolver.ts +1010 -0
- package/src/graphql/index.ts +48 -0
- package/src/http/FindMyWay/internal/router.ts +4 -7
- package/src/http/HttpClient.ts +110 -12
- package/src/http/HttpEffect.ts +11 -5
- package/src/http/HttpMiddleware.ts +33 -34
- package/src/http/HttpRouter.ts +35 -0
- package/src/http/HttpServerResponse.ts +28 -16
- package/src/http/HttpTraceContext.ts +8 -2
- package/src/http/Multipart.ts +17 -1
- package/src/http-api/HttpApiScalar.ts +5 -0
- package/src/internal/dateTime.ts +13 -10
- package/src/internal/effect.ts +22 -15
- package/src/internal/graphql.ts +263 -0
- package/src/internal/graphqlHeaders.ts +11 -0
- package/src/internal/request.ts +31 -3
- package/src/internal/schema/toCodeDocument.ts +7 -1
- package/src/internal/schema/toJsonSchemaDocument.ts +34 -2
- package/src/internal/version.ts +1 -1
- package/src/net/AddressResolver.ts +222 -0
- package/src/net/Dns.ts +1035 -0
- package/src/net/Host.ts +544 -0
- package/src/net/IpInterface.ts +117 -7
- package/src/net/IpNetwork.ts +116 -17
- package/src/net/NetAddress.ts +620 -76
- package/src/net/index.ts +18 -0
- package/src/observability/OtlpMetrics.ts +12 -23
- package/src/observability/PrometheusMetrics.ts +1 -0
- package/src/persistence/PersistedQueue.ts +146 -53
- package/src/rpc/RpcClient.ts +41 -19
- package/src/rpc/RpcServer.ts +115 -40
- package/src/socket/DatagramSocket.ts +919 -0
- package/src/socket/Socket.ts +28 -2
- package/src/socket/index.ts +6 -0
- package/src/sql/Migrator.ts +21 -5
- package/src/sql/SqlClient.ts +39 -15
- package/src/testing/TestCrypto.ts +94 -0
- package/src/testing/index.ts +6 -0
- package/src/workflow/DurableDeferred.ts +160 -47
- package/src/workflow/WorkflowEngine.ts +50 -5
package/dist/net/Host.js
ADDED
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import * as Equal from "../Equal.js";
|
|
2
|
+
import * as Hash from "../Hash.js";
|
|
3
|
+
import * as Inspectable from "../Inspectable.js";
|
|
4
|
+
import { hasProperty } from "../Predicate.js";
|
|
5
|
+
import * as Result from "../Result.js";
|
|
6
|
+
import * as NetAddress from "./NetAddress.js";
|
|
7
|
+
const TypeId = "~effect/net/Host";
|
|
8
|
+
const hostError = (input, message) => Result.fail(new NetAddress.NetAddressError({
|
|
9
|
+
input,
|
|
10
|
+
message
|
|
11
|
+
}));
|
|
12
|
+
const asciiNameCharacter = /^[a-z0-9_.-]$/i;
|
|
13
|
+
const labelPattern = /^[a-z0-9_](?:[a-z0-9_-]{0,61}[a-z0-9_])?$/;
|
|
14
|
+
const numericLabel = /^(?:\d+|0x[0-9a-f]*)$/;
|
|
15
|
+
const validateDomainName = name => {
|
|
16
|
+
if (name === ".") return undefined;
|
|
17
|
+
const relative = name.endsWith(".") ? name.slice(0, -1) : name;
|
|
18
|
+
if (relative.length === 0) return "domain name must not be empty";
|
|
19
|
+
if (relative.length > 253) return "domain name must be at most 253 characters";
|
|
20
|
+
const labels = relative.split(".");
|
|
21
|
+
for (const label of labels) {
|
|
22
|
+
if (label.length === 0) return "domain name labels must not be empty";
|
|
23
|
+
if (label.length > 63) return "domain name labels must be at most 63 characters";
|
|
24
|
+
if (!labelPattern.test(label)) {
|
|
25
|
+
return "domain name labels must contain only letters, digits, hyphens, or underscores and must not start or end with a hyphen";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (numericLabel.test(labels[labels.length - 1])) {
|
|
29
|
+
return "the last domain name label must not be numeric";
|
|
30
|
+
}
|
|
31
|
+
return undefined;
|
|
32
|
+
};
|
|
33
|
+
const toAsciiDomainName = input => {
|
|
34
|
+
let ascii = true;
|
|
35
|
+
for (const character of input) {
|
|
36
|
+
if (character.charCodeAt(0) < 0x80) {
|
|
37
|
+
if (!asciiNameCharacter.test(character)) return undefined;
|
|
38
|
+
} else {
|
|
39
|
+
ascii = false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (ascii) return input.toLowerCase();
|
|
43
|
+
try {
|
|
44
|
+
return new URL(`http://${input}`).hostname;
|
|
45
|
+
} catch {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Returns `true` when a value is a valid, normalized domain name.
|
|
51
|
+
*
|
|
52
|
+
* @stability experimental
|
|
53
|
+
* @category guards
|
|
54
|
+
* @since 4.0.0
|
|
55
|
+
*/
|
|
56
|
+
export const isDomainName = u => typeof u === "string" && /^[a-z0-9_.-]+$/.test(u) && validateDomainName(u) === undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Returns `true` when a value is a host.
|
|
59
|
+
*
|
|
60
|
+
* @stability experimental
|
|
61
|
+
* @category guards
|
|
62
|
+
* @since 4.0.0
|
|
63
|
+
*/
|
|
64
|
+
export const isHost = u => NetAddress.isIpAddress(u) || NetAddress.isScopedIpv6Literal(u) || isDomainName(u);
|
|
65
|
+
/**
|
|
66
|
+
* Returns `true` when a value is an unresolved host and port.
|
|
67
|
+
*
|
|
68
|
+
* @stability experimental
|
|
69
|
+
* @category guards
|
|
70
|
+
* @since 4.0.0
|
|
71
|
+
*/
|
|
72
|
+
export const isHostPort = u => hasProperty(u, TypeId);
|
|
73
|
+
/**
|
|
74
|
+
* Parses and normalizes a domain name.
|
|
75
|
+
*
|
|
76
|
+
* **Details**
|
|
77
|
+
*
|
|
78
|
+
* ASCII names are lowercased. Names containing non-ASCII characters are
|
|
79
|
+
* converted to their ASCII (`xn--`) form using the WHATWG URL host parser, then
|
|
80
|
+
* validated with the same rules as ASCII names. A trailing dot is preserved.
|
|
81
|
+
*
|
|
82
|
+
* **Example** (Normalizing domain names)
|
|
83
|
+
*
|
|
84
|
+
* ```ts import.meta.vitest
|
|
85
|
+
* import { Result } from "effect"
|
|
86
|
+
* import { Host } from "effect/net"
|
|
87
|
+
*
|
|
88
|
+
* Result.getOrThrow(Host.domainNameFromString("Example.COM")) // => "example.com"
|
|
89
|
+
* Result.getOrThrow(Host.domainNameFromString("bücher.example")) // => "xn--bcher-kva.example"
|
|
90
|
+
* Result.isFailure(Host.domainNameFromString("1.2.3.4")) // => true
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @stability experimental
|
|
94
|
+
* @category decoding
|
|
95
|
+
* @since 4.0.0
|
|
96
|
+
*/
|
|
97
|
+
export const domainNameFromString = input => {
|
|
98
|
+
const name = toAsciiDomainName(input);
|
|
99
|
+
if (name === undefined) return hostError(input, "invalid domain name");
|
|
100
|
+
const error = validateDomainName(name);
|
|
101
|
+
return error === undefined ? Result.succeed(name) : hostError(input, error);
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Parses a trusted domain name, throwing on failure.
|
|
105
|
+
*
|
|
106
|
+
* @stability experimental
|
|
107
|
+
* @category unsafe
|
|
108
|
+
* @since 4.0.0
|
|
109
|
+
*/
|
|
110
|
+
export const domainNameFromStringUnsafe = input => Result.getOrThrow(domainNameFromString(input));
|
|
111
|
+
/**
|
|
112
|
+
* Converts a `DomainNameInput` to a domain name, parsing and normalizing it like
|
|
113
|
+
* `domainNameFromString`.
|
|
114
|
+
*
|
|
115
|
+
* **Details**
|
|
116
|
+
*
|
|
117
|
+
* Domain names are strings, so every input is parsed.
|
|
118
|
+
*
|
|
119
|
+
* @stability experimental
|
|
120
|
+
* @category constructors
|
|
121
|
+
* @since 4.0.0
|
|
122
|
+
*/
|
|
123
|
+
export const domainNameFromInput = input => domainNameFromString(input);
|
|
124
|
+
/**
|
|
125
|
+
* Converts a trusted `DomainNameInput` to a domain name, throwing on failure.
|
|
126
|
+
*
|
|
127
|
+
* @stability experimental
|
|
128
|
+
* @category unsafe
|
|
129
|
+
* @since 4.0.0
|
|
130
|
+
*/
|
|
131
|
+
export const domainNameFromInputUnsafe = input => Result.getOrThrow(domainNameFromInput(input));
|
|
132
|
+
/**
|
|
133
|
+
* Parses a host as a numeric IP address, a scoped IPv6 literal, or a domain
|
|
134
|
+
* name, in that order.
|
|
135
|
+
*
|
|
136
|
+
* **Example** (Parsing hosts)
|
|
137
|
+
*
|
|
138
|
+
* ```ts import.meta.vitest
|
|
139
|
+
* import { Result } from "effect"
|
|
140
|
+
* import { Host, NetAddress } from "effect/net"
|
|
141
|
+
*
|
|
142
|
+
* NetAddress.isIpAddress(Result.getOrThrow(Host.hostFromString("10.0.0.5"))) // => true
|
|
143
|
+
* Result.getOrThrow(Host.hostFromString("fe80::1%eth0")) // => "fe80::1%eth0"
|
|
144
|
+
* Result.getOrThrow(Host.hostFromString("DB.internal")) // => "db.internal"
|
|
145
|
+
* ```
|
|
146
|
+
*
|
|
147
|
+
* @stability experimental
|
|
148
|
+
* @category decoding
|
|
149
|
+
* @since 4.0.0
|
|
150
|
+
*/
|
|
151
|
+
export const hostFromString = input => {
|
|
152
|
+
if (input.includes("%")) return NetAddress.scopedIpv6LiteralFromString(input);
|
|
153
|
+
if (input.includes(":")) return NetAddress.ipFromString(input);
|
|
154
|
+
if (/^[\d.]+$/.test(input)) {
|
|
155
|
+
const address = NetAddress.ipFromString(input);
|
|
156
|
+
if (Result.isSuccess(address)) return address;
|
|
157
|
+
}
|
|
158
|
+
return domainNameFromString(input);
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* Parses a trusted host, throwing on failure.
|
|
162
|
+
*
|
|
163
|
+
* @stability experimental
|
|
164
|
+
* @category unsafe
|
|
165
|
+
* @since 4.0.0
|
|
166
|
+
*/
|
|
167
|
+
export const hostFromStringUnsafe = input => Result.getOrThrow(hostFromString(input));
|
|
168
|
+
/**
|
|
169
|
+
* Converts a `HostInput` to a host, parsing strings like `hostFromString` and
|
|
170
|
+
* converting other inputs like `NetAddress.ipFromInput`.
|
|
171
|
+
*
|
|
172
|
+
* @stability experimental
|
|
173
|
+
* @category constructors
|
|
174
|
+
* @since 4.0.0
|
|
175
|
+
*/
|
|
176
|
+
export const hostFromInput = input => typeof input === "string" ? hostFromString(input) : NetAddress.ipFromInput(input);
|
|
177
|
+
/**
|
|
178
|
+
* Converts a trusted `HostInput` to a host, throwing on failure.
|
|
179
|
+
*
|
|
180
|
+
* @stability experimental
|
|
181
|
+
* @category unsafe
|
|
182
|
+
* @since 4.0.0
|
|
183
|
+
*/
|
|
184
|
+
export const hostFromInputUnsafe = input => Result.getOrThrow(hostFromInput(input));
|
|
185
|
+
/**
|
|
186
|
+
* Formats a host without brackets.
|
|
187
|
+
*
|
|
188
|
+
* @stability experimental
|
|
189
|
+
* @category encoding
|
|
190
|
+
* @since 4.0.0
|
|
191
|
+
*/
|
|
192
|
+
export const formatHost = self => typeof self === "string" ? self : NetAddress.formatIp(self);
|
|
193
|
+
/**
|
|
194
|
+
* Returns `true` when a domain name ends with a dot, which excludes it from
|
|
195
|
+
* resolver search domains.
|
|
196
|
+
*
|
|
197
|
+
* @stability experimental
|
|
198
|
+
* @category predicates
|
|
199
|
+
* @since 4.0.0
|
|
200
|
+
*/
|
|
201
|
+
export const isFullyQualified = self => self.endsWith(".");
|
|
202
|
+
/**
|
|
203
|
+
* Appends the trailing dot to a domain name, unless it is already fully
|
|
204
|
+
* qualified.
|
|
205
|
+
*
|
|
206
|
+
* @stability experimental
|
|
207
|
+
* @category converting
|
|
208
|
+
* @since 4.0.0
|
|
209
|
+
*/
|
|
210
|
+
export const toFullyQualified = self => isFullyQualified(self) ? self : `${self}.`;
|
|
211
|
+
/**
|
|
212
|
+
* Removes the trailing dot of a fully qualified domain name, except from the
|
|
213
|
+
* root name `.`.
|
|
214
|
+
*
|
|
215
|
+
* @stability experimental
|
|
216
|
+
* @category converting
|
|
217
|
+
* @since 4.0.0
|
|
218
|
+
*/
|
|
219
|
+
export const toRelative = self => self.length > 1 && isFullyQualified(self) ? self.slice(0, -1) : self;
|
|
220
|
+
const HostPortProto = {
|
|
221
|
+
...Inspectable.BaseProto,
|
|
222
|
+
_tag: "HostPort",
|
|
223
|
+
[TypeId]: TypeId,
|
|
224
|
+
[Equal.symbol](that) {
|
|
225
|
+
return isHostPort(that) && this.port === that.port && Equal.equals(this.host, that.host);
|
|
226
|
+
},
|
|
227
|
+
[Hash.symbol]() {
|
|
228
|
+
return Hash.combine(Hash.hash(this.host), Hash.number(this.port));
|
|
229
|
+
},
|
|
230
|
+
toString() {
|
|
231
|
+
return formatHostPort(this);
|
|
232
|
+
},
|
|
233
|
+
toJSON() {
|
|
234
|
+
return this.toString();
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const isPort = port => Number.isInteger(port) && port >= 0 && port <= 0xffff;
|
|
238
|
+
const makeHostPort = (host, port) => {
|
|
239
|
+
const self = Object.create(HostPortProto);
|
|
240
|
+
self.host = host;
|
|
241
|
+
self.port = port;
|
|
242
|
+
return Object.freeze(self);
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* Creates a checked host and port.
|
|
246
|
+
*
|
|
247
|
+
* @stability experimental
|
|
248
|
+
* @category constructors
|
|
249
|
+
* @since 4.0.0
|
|
250
|
+
*/
|
|
251
|
+
export const hostPort = (host, port) => {
|
|
252
|
+
if (!isHost(host)) return hostError(host, "expected a host");
|
|
253
|
+
if (!isPort(port)) return hostError(port, "port must be an integer from 0 through 65535");
|
|
254
|
+
return Result.succeed(makeHostPort(host, port));
|
|
255
|
+
};
|
|
256
|
+
/**
|
|
257
|
+
* Creates a trusted host and port, throwing on failure.
|
|
258
|
+
*
|
|
259
|
+
* @stability experimental
|
|
260
|
+
* @category unsafe
|
|
261
|
+
* @since 4.0.0
|
|
262
|
+
*/
|
|
263
|
+
export const hostPortUnsafe = (host, port) => Result.getOrThrow(hostPort(host, port));
|
|
264
|
+
/**
|
|
265
|
+
* Parses `host:port`, `[IPv6]:port`, or `[IPv6%zone]:port`.
|
|
266
|
+
*
|
|
267
|
+
* **Details**
|
|
268
|
+
*
|
|
269
|
+
* IPv6 hosts must be bracketed and other hosts must not be. The port is
|
|
270
|
+
* required and must be an unpadded decimal integer from 0 through 65535. A
|
|
271
|
+
* zone follows the `%` directly; the percent-encoded `%25` separator of RFC
|
|
272
|
+
* 6874 URLs is not decoded, because `[fe80::1%253]:80` would be ambiguous.
|
|
273
|
+
*
|
|
274
|
+
* **Example** (Parsing host and port strings)
|
|
275
|
+
*
|
|
276
|
+
* ```ts import.meta.vitest
|
|
277
|
+
* import { Result } from "effect"
|
|
278
|
+
* import { Host } from "effect/net"
|
|
279
|
+
*
|
|
280
|
+
* const endpoint = Result.getOrThrow(Host.hostPortFromString("DB.internal:5432"))
|
|
281
|
+
* endpoint.host // => "db.internal"
|
|
282
|
+
* endpoint.port // => 5432
|
|
283
|
+
* Host.formatHostPort(Result.getOrThrow(Host.hostPortFromString("[::1]:80"))) // => "[::1]:80"
|
|
284
|
+
* ```
|
|
285
|
+
*
|
|
286
|
+
* @see {@link formatHostPort} for the inverse operation
|
|
287
|
+
* @stability experimental
|
|
288
|
+
* @category decoding
|
|
289
|
+
* @since 4.0.0
|
|
290
|
+
*/
|
|
291
|
+
export const hostPortFromString = input => {
|
|
292
|
+
let hostText;
|
|
293
|
+
let portText;
|
|
294
|
+
if (input.startsWith("[")) {
|
|
295
|
+
const end = input.indexOf("]");
|
|
296
|
+
if (end === -1 || input[end + 1] !== ":") return hostError(input, "expected [IPv6]:port");
|
|
297
|
+
hostText = input.slice(1, end);
|
|
298
|
+
portText = input.slice(end + 2);
|
|
299
|
+
if (!hostText.includes(":")) return hostError(input, "only IPv6 addresses use brackets");
|
|
300
|
+
} else {
|
|
301
|
+
const separator = input.lastIndexOf(":");
|
|
302
|
+
if (separator === -1) return hostError(input, "expected host:port");
|
|
303
|
+
if (input.indexOf(":") !== separator) return hostError(input, "IPv6 addresses must be bracketed");
|
|
304
|
+
hostText = input.slice(0, separator);
|
|
305
|
+
portText = input.slice(separator + 1);
|
|
306
|
+
}
|
|
307
|
+
if (!/^(0|[1-9]\d*)$/.test(portText)) {
|
|
308
|
+
return hostError(input, "port must be an unpadded decimal integer");
|
|
309
|
+
}
|
|
310
|
+
const port = Number(portText);
|
|
311
|
+
if (!isPort(port)) return hostError(input, "port must be an integer from 0 through 65535");
|
|
312
|
+
return Result.map(hostFromString(hostText), host => makeHostPort(host, port));
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* Parses a trusted `host:port` string, throwing on failure.
|
|
316
|
+
*
|
|
317
|
+
* @stability experimental
|
|
318
|
+
* @category unsafe
|
|
319
|
+
* @since 4.0.0
|
|
320
|
+
*/
|
|
321
|
+
export const hostPortFromStringUnsafe = input => Result.getOrThrow(hostPortFromString(input));
|
|
322
|
+
/**
|
|
323
|
+
* Converts a `HostPortInput` to an endpoint, parsing strings like
|
|
324
|
+
* `hostPortFromString`, converting parts like `hostPort`, and returning
|
|
325
|
+
* endpoints unchanged.
|
|
326
|
+
*
|
|
327
|
+
* @stability experimental
|
|
328
|
+
* @category constructors
|
|
329
|
+
* @since 4.0.0
|
|
330
|
+
*/
|
|
331
|
+
export const hostPortFromInput = input => {
|
|
332
|
+
if (isHostPort(input)) return Result.succeed(input);
|
|
333
|
+
if (typeof input === "string") return hostPortFromString(input);
|
|
334
|
+
if (!hasProperty(input, "host") || !hasProperty(input, "port")) {
|
|
335
|
+
return hostError(input, "expected a host and port");
|
|
336
|
+
}
|
|
337
|
+
const port = input.port;
|
|
338
|
+
return Result.flatMap(hostFromInput(input.host), host => hostPort(host, port));
|
|
339
|
+
};
|
|
340
|
+
/**
|
|
341
|
+
* Converts a trusted `HostPortInput` to an endpoint, throwing on failure.
|
|
342
|
+
*
|
|
343
|
+
* @stability experimental
|
|
344
|
+
* @category unsafe
|
|
345
|
+
* @since 4.0.0
|
|
346
|
+
*/
|
|
347
|
+
export const hostPortFromInputUnsafe = input => Result.getOrThrow(hostPortFromInput(input));
|
|
348
|
+
/**
|
|
349
|
+
* Formats a host and port, bracketing IPv6 hosts.
|
|
350
|
+
*
|
|
351
|
+
* @see {@link hostPortFromString} for the inverse operation
|
|
352
|
+
* @stability experimental
|
|
353
|
+
* @category encoding
|
|
354
|
+
* @since 4.0.0
|
|
355
|
+
*/
|
|
356
|
+
export const formatHostPort = self => {
|
|
357
|
+
const host = formatHost(self.host);
|
|
358
|
+
return host.includes(":") ? `[${host}]:${self.port}` : `${host}:${self.port}`;
|
|
359
|
+
};
|
|
360
|
+
/**
|
|
361
|
+
* Parses a hosts file into the addresses of each host name. Invalid entries
|
|
362
|
+
* are skipped.
|
|
363
|
+
*
|
|
364
|
+
* **Example** (Parsing a hosts file)
|
|
365
|
+
*
|
|
366
|
+
* ```ts import.meta.vitest
|
|
367
|
+
* import { Host, NetAddress } from "effect/net"
|
|
368
|
+
*
|
|
369
|
+
* const hosts = Host.parseHostsFile(`
|
|
370
|
+
* 127.0.0.1 localhost
|
|
371
|
+
* ::1 localhost ip6-localhost # loopback
|
|
372
|
+
* `)
|
|
373
|
+
* hosts.get(Host.domainNameFromStringUnsafe("localhost"))?.map(NetAddress.formatIp) // => ["127.0.0.1", "::1"]
|
|
374
|
+
* ```
|
|
375
|
+
*
|
|
376
|
+
* @stability experimental
|
|
377
|
+
* @category decoding
|
|
378
|
+
* @since 4.0.0
|
|
379
|
+
*/
|
|
380
|
+
export const parseHostsFile = text => {
|
|
381
|
+
const hosts = new Map();
|
|
382
|
+
for (const line of text.split(/\r?\n/)) {
|
|
383
|
+
const comment = line.indexOf("#");
|
|
384
|
+
const [first, ...names] = (comment === -1 ? line : line.slice(0, comment)).trim().split(/\s+/);
|
|
385
|
+
const address = NetAddress.ipFromString(first);
|
|
386
|
+
if (Result.isFailure(address)) continue;
|
|
387
|
+
for (const name of names) {
|
|
388
|
+
const domain = domainNameFromString(name);
|
|
389
|
+
if (Result.isFailure(domain)) continue;
|
|
390
|
+
const key = toRelative(domain.success);
|
|
391
|
+
const addresses = hosts.get(key);
|
|
392
|
+
if (addresses === undefined) hosts.set(key, [address.success]);else if (!addresses.some(existing => Equal.equals(existing, address.success))) addresses.push(address.success);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return hosts;
|
|
396
|
+
};
|
|
397
|
+
//# sourceMappingURL=Host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Host.js","names":[],"sources":["../../src/net/Host.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as Equal from "../Equal.ts";
|
|
8
8
|
import * as Hash from "../Hash.ts";
|
|
9
|
+
import * as Inspectable from "../Inspectable.ts";
|
|
9
10
|
import * as Result from "../Result.ts";
|
|
10
11
|
import * as NetAddress from "./NetAddress.ts";
|
|
11
12
|
declare const TypeId: "~effect/net/IpInterface";
|
|
@@ -19,13 +20,11 @@ declare const TypeId: "~effect/net/IpInterface";
|
|
|
19
20
|
* @category models
|
|
20
21
|
* @since 4.0.0
|
|
21
22
|
*/
|
|
22
|
-
export interface IpInterface<out A extends NetAddress.IpAddress = NetAddress.IpAddress> extends Equal.Equal, Hash.Hash {
|
|
23
|
+
export interface IpInterface<out A extends NetAddress.IpAddress = NetAddress.IpAddress> extends Equal.Equal, Hash.Hash, Inspectable.Inspectable {
|
|
23
24
|
readonly _tag: "IpInterface";
|
|
24
25
|
readonly address: A;
|
|
25
26
|
readonly prefixLength: number;
|
|
26
27
|
readonly [TypeId]: typeof TypeId;
|
|
27
|
-
toString(): string;
|
|
28
|
-
toJSON(): string;
|
|
29
28
|
}
|
|
30
29
|
/**
|
|
31
30
|
* An IPv4 host address and prefix length.
|
|
@@ -43,6 +42,42 @@ export type Ipv4Interface = IpInterface<NetAddress.Ipv4Address>;
|
|
|
43
42
|
* @since 4.0.0
|
|
44
43
|
*/
|
|
45
44
|
export type Ipv6Interface = IpInterface<NetAddress.Ipv6Address>;
|
|
45
|
+
/**
|
|
46
|
+
* An address and prefix length, generic over the accepted address input.
|
|
47
|
+
*
|
|
48
|
+
* @see {@link make} for the checked constructor
|
|
49
|
+
* @stability unstable
|
|
50
|
+
* @category models
|
|
51
|
+
* @since 4.0.0
|
|
52
|
+
*/
|
|
53
|
+
export interface IpInterfaceParts<A extends NetAddress.IpAddressInput = NetAddress.IpAddressInput> {
|
|
54
|
+
readonly address: A;
|
|
55
|
+
readonly prefixLength: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* An interface address, or a string or parts to convert to one.
|
|
59
|
+
*
|
|
60
|
+
* @stability unstable
|
|
61
|
+
* @category models
|
|
62
|
+
* @since 4.0.0
|
|
63
|
+
*/
|
|
64
|
+
export type IpInterfaceInput = IpInterface | string | IpInterfaceParts;
|
|
65
|
+
/**
|
|
66
|
+
* An IPv4 interface address, or a string or parts to convert to one.
|
|
67
|
+
*
|
|
68
|
+
* @stability unstable
|
|
69
|
+
* @category models
|
|
70
|
+
* @since 4.0.0
|
|
71
|
+
*/
|
|
72
|
+
export type Ipv4InterfaceInput = Ipv4Interface | string | IpInterfaceParts<NetAddress.Ipv4AddressInput>;
|
|
73
|
+
/**
|
|
74
|
+
* An IPv6 interface address, or a string or parts to convert to one.
|
|
75
|
+
*
|
|
76
|
+
* @stability unstable
|
|
77
|
+
* @category models
|
|
78
|
+
* @since 4.0.0
|
|
79
|
+
*/
|
|
80
|
+
export type Ipv6InterfaceInput = Ipv6Interface | string | IpInterfaceParts<NetAddress.Ipv6AddressInput>;
|
|
46
81
|
/**
|
|
47
82
|
* Companion types for parsing IP interface addresses.
|
|
48
83
|
*
|
|
@@ -131,6 +166,44 @@ export declare const ipv6FromString: (input: string, options?: IpInterface.Parse
|
|
|
131
166
|
* @since 4.0.0
|
|
132
167
|
*/
|
|
133
168
|
export declare const fromString: (input: string, options?: IpInterface.ParseOptions) => Result.Result<IpInterface, NetAddress.NetAddressError>;
|
|
169
|
+
/**
|
|
170
|
+
* Converts an `Ipv4InterfaceInput` to an IPv4 interface address, parsing
|
|
171
|
+
* strings like `ipv4FromString` with the given options, converting parts like
|
|
172
|
+
* `make`, and returning interface addresses unchanged.
|
|
173
|
+
*
|
|
174
|
+
* @stability unstable
|
|
175
|
+
* @category constructors
|
|
176
|
+
* @since 4.0.0
|
|
177
|
+
*/
|
|
178
|
+
export declare const ipv4FromInput: (input: Ipv4InterfaceInput, options?: IpInterface.ParseOptions) => Result.Result<Ipv4Interface, NetAddress.NetAddressError>;
|
|
179
|
+
/**
|
|
180
|
+
* Converts an `Ipv6InterfaceInput` to an IPv6 interface address, parsing
|
|
181
|
+
* strings like `ipv6FromString` with the given options, converting parts like
|
|
182
|
+
* `make`, and returning interface addresses unchanged.
|
|
183
|
+
*
|
|
184
|
+
* @stability unstable
|
|
185
|
+
* @category constructors
|
|
186
|
+
* @since 4.0.0
|
|
187
|
+
*/
|
|
188
|
+
export declare const ipv6FromInput: (input: Ipv6InterfaceInput, options?: IpInterface.ParseOptions) => Result.Result<Ipv6Interface, NetAddress.NetAddressError>;
|
|
189
|
+
/**
|
|
190
|
+
* Converts an `IpInterfaceInput` to an interface address, parsing strings like
|
|
191
|
+
* `fromString` with the given options, converting parts like `make`, and
|
|
192
|
+
* returning interface addresses unchanged.
|
|
193
|
+
*
|
|
194
|
+
* @stability unstable
|
|
195
|
+
* @category constructors
|
|
196
|
+
* @since 4.0.0
|
|
197
|
+
*/
|
|
198
|
+
export declare const fromInput: (input: IpInterfaceInput, options?: IpInterface.ParseOptions) => Result.Result<IpInterface, NetAddress.NetAddressError>;
|
|
199
|
+
/**
|
|
200
|
+
* Converts a trusted `IpInterfaceInput` to an interface address, throwing on failure.
|
|
201
|
+
*
|
|
202
|
+
* @stability unstable
|
|
203
|
+
* @category unsafe
|
|
204
|
+
* @since 4.0.0
|
|
205
|
+
*/
|
|
206
|
+
export declare const fromInputUnsafe: (input: IpInterfaceInput, options?: IpInterface.ParseOptions) => IpInterface;
|
|
134
207
|
/**
|
|
135
208
|
* Creates a trusted interface address, throwing when its prefix length is invalid.
|
|
136
209
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IpInterface.d.ts","sourceRoot":"","sources":["../../src/net/IpInterface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"IpInterface.d.ts","sourceRoot":"","sources":["../../src/net/IpInterface.ts"],"names":[],"mappings":"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"}
|
package/dist/net/IpInterface.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as Equal from "../Equal.js";
|
|
8
8
|
import * as Hash from "../Hash.js";
|
|
9
|
-
import
|
|
9
|
+
import * as Inspectable from "../Inspectable.js";
|
|
10
10
|
import { hasProperty } from "../Predicate.js";
|
|
11
11
|
import * as Result from "../Result.js";
|
|
12
12
|
import * as NetAddress from "./NetAddress.js";
|
|
@@ -36,6 +36,7 @@ export const isIpv6Interface = u => isIpInterface(u) && NetAddress.isIpv6Address
|
|
|
36
36
|
*/
|
|
37
37
|
export const isIpInterface = u => hasProperty(u, TypeId);
|
|
38
38
|
const IpInterfaceProto = {
|
|
39
|
+
...Inspectable.BaseProto,
|
|
39
40
|
_tag: "IpInterface",
|
|
40
41
|
[TypeId]: TypeId,
|
|
41
42
|
[Equal.symbol](that) {
|
|
@@ -49,9 +50,6 @@ const IpInterfaceProto = {
|
|
|
49
50
|
},
|
|
50
51
|
toJSON() {
|
|
51
52
|
return this.toString();
|
|
52
|
-
},
|
|
53
|
-
[NodeInspectSymbol]() {
|
|
54
|
-
return this.toJSON();
|
|
55
53
|
}
|
|
56
54
|
};
|
|
57
55
|
const interfaceError = (input, message) => Result.fail(new NetAddress.NetAddressError({
|
|
@@ -133,6 +131,57 @@ export const ipv6FromString = (input, options) => Result.flatMap(parseAddressWit
|
|
|
133
131
|
* @since 4.0.0
|
|
134
132
|
*/
|
|
135
133
|
export const fromString = (input, options) => Result.flatMap(parseAddressWithPrefix(input, options), parts => Result.flatMap(NetAddress.ipFromString(parts.address), address => make(address, parts.prefixLength ?? NetAddress.width(address))));
|
|
134
|
+
const fromParts = (input, toAddress) => hasProperty(input, "address") && hasProperty(input, "prefixLength") ? Result.flatMap(toAddress(input.address), address => make(address, input.prefixLength)) : interfaceError(input, "expected an address and prefix length");
|
|
135
|
+
/**
|
|
136
|
+
* Converts an `Ipv4InterfaceInput` to an IPv4 interface address, parsing
|
|
137
|
+
* strings like `ipv4FromString` with the given options, converting parts like
|
|
138
|
+
* `make`, and returning interface addresses unchanged.
|
|
139
|
+
*
|
|
140
|
+
* @stability unstable
|
|
141
|
+
* @category constructors
|
|
142
|
+
* @since 4.0.0
|
|
143
|
+
*/
|
|
144
|
+
export const ipv4FromInput = (input, options) => {
|
|
145
|
+
if (isIpv4Interface(input)) return Result.succeed(input);
|
|
146
|
+
if (typeof input === "string") return ipv4FromString(input, options);
|
|
147
|
+
return fromParts(input, NetAddress.ipv4FromInput);
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Converts an `Ipv6InterfaceInput` to an IPv6 interface address, parsing
|
|
151
|
+
* strings like `ipv6FromString` with the given options, converting parts like
|
|
152
|
+
* `make`, and returning interface addresses unchanged.
|
|
153
|
+
*
|
|
154
|
+
* @stability unstable
|
|
155
|
+
* @category constructors
|
|
156
|
+
* @since 4.0.0
|
|
157
|
+
*/
|
|
158
|
+
export const ipv6FromInput = (input, options) => {
|
|
159
|
+
if (isIpv6Interface(input)) return Result.succeed(input);
|
|
160
|
+
if (typeof input === "string") return ipv6FromString(input, options);
|
|
161
|
+
return fromParts(input, NetAddress.ipv6FromInput);
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Converts an `IpInterfaceInput` to an interface address, parsing strings like
|
|
165
|
+
* `fromString` with the given options, converting parts like `make`, and
|
|
166
|
+
* returning interface addresses unchanged.
|
|
167
|
+
*
|
|
168
|
+
* @stability unstable
|
|
169
|
+
* @category constructors
|
|
170
|
+
* @since 4.0.0
|
|
171
|
+
*/
|
|
172
|
+
export const fromInput = (input, options) => {
|
|
173
|
+
if (isIpInterface(input)) return Result.succeed(input);
|
|
174
|
+
if (typeof input === "string") return fromString(input, options);
|
|
175
|
+
return fromParts(input, NetAddress.ipFromInput);
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Converts a trusted `IpInterfaceInput` to an interface address, throwing on failure.
|
|
179
|
+
*
|
|
180
|
+
* @stability unstable
|
|
181
|
+
* @category unsafe
|
|
182
|
+
* @since 4.0.0
|
|
183
|
+
*/
|
|
184
|
+
export const fromInputUnsafe = (input, options) => Result.getOrThrow(fromInput(input, options));
|
|
136
185
|
/**
|
|
137
186
|
* Creates a trusted interface address, throwing when its prefix length is invalid.
|
|
138
187
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IpInterface.js","names":[],"sources":["../../src/net/IpInterface.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;AAMA,OAAO,KAAK,KAAK,MAAM,aAAa;AACpC,OAAO,KAAK,IAAI,MAAM,YAAY;AAClC,
|
|
1
|
+
{"version":3,"file":"IpInterface.js","names":[],"sources":["../../src/net/IpInterface.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|