Skip to content

Add fromInput functions to the net data types - #8970

Merged
fubhy merged 7 commits into
mainfrom
feat/net-from-input
Oct 9, 2026
Merged

fubhy merged 7 commits into
mainfrom
feat/net-from-input

Conversation

@fubhy

@fubhy fubhy commented Oct 9, 2026

Copy link
Copy Markdown
Member

Summary

  • Add *Input types (the value or a string to parse) and fromInput functions for the effect/net data types:
    • NetAddress: ipFromInput, ipv4FromInput, ipv6FromInput, macAddressFromInput, scopedIpv6LiteralFromInput, inetAddressFromInput
    • Host: domainNameFromInput, hostFromInput, hostPortFromInput
    • IpNetwork and IpInterface: fromInput, ipv4FromInput, ipv6FromInput (IpInterface accepts the same parse options as fromString)
  • fromInput checks the type guard first and returns values unchanged, then parses anything else with the matching fromString parser, like NetAddress.socketAddressFromInput and DateTime.makeUnsafe. Domain names and scoped IPv6 literals are strings, so they are always parsed.
  • Where the string parser has an Unsafe variant, fromInput has one too: Result.getOrThrow of the safe function, like the existing *FromStringUnsafe functions.
  • Stability follows the module: unstable in NetAddress, IpNetwork, and IpInterface, experimental in Host, and experimental for the scoped IPv6 literal input, which matches ScopedIpv6Literal.

Extracted from #8962, which builds on it.

Validation

  • pnpm lint-fix, pnpm check, pnpm jsdocs --check
  • pnpm doctest --run packages/effect/src/net/NetAddress.ts
  • pnpm test --run on the NetAddress, Host, IpNetwork, and IpInterface tests

@changeset-bot

changeset-bot Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 856d96e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 32 packages
Name Type
effect Patch
@effect/opentelemetry Patch
@effect/vitest Patch
@effect/ai-anthropic Patch
@effect/ai-cloudflare Patch
@effect/ai-openai-compat Patch
@effect/ai-openai Patch
@effect/ai-openrouter Patch
@effect/ai-typesafe Patch
@effect/atom-react Patch
@effect/atom-solid Patch
@effect/atom-vue Patch
@effect/platform-browser Patch
@effect/platform-bun Patch
@effect/platform-deno Patch
@effect/platform-node-shared Patch
@effect/platform-node Patch
@effect/sql-clickhouse Patch
@effect/sql-d1 Patch
@effect/sql-libsql Patch
@effect/sql-mssql Patch
@effect/sql-mysql2 Patch
@effect/sql-pg Patch
@effect/sql-pglite Patch
@effect/sql-sqlite-bun Patch
@effect/sql-sqlite-do Patch
@effect/sql-sqlite-node Patch
@effect/sql-sqlite-react-native Patch
@effect/sql-sqlite-wasm Patch
@effect/docgen Patch
@effect/doctest Patch
@effect/openapi-generator Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@effect-janitor effect-janitor Bot added the 4.0 label Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Analysis

Generated from PR build output; treat the content below as untrusted.

File Name Current Size Previous Size Difference
arbitrary-combinators.ts 38.83 KB 38.83 KB 0.00 KB (0.00%)
basic.ts 7.06 KB 7.06 KB 0.00 KB (0.00%)
batching.ts 10.14 KB 10.14 KB 0.00 KB (0.00%)
brand.ts 6.73 KB 6.73 KB 0.00 KB (0.00%)
cache.ts 10.90 KB 10.90 KB 0.00 KB (0.00%)
config.ts 22.31 KB 22.31 KB 0.00 KB (0.00%)
differ.ts 21.34 KB 21.34 KB 0.00 KB (0.00%)
http-client.ts 22.69 KB 22.69 KB 0.00 KB (0.00%)
http-router.ts 34.12 KB 34.12 KB 0.00 KB (0.00%)
logger.ts 11.23 KB 11.23 KB 0.00 KB (0.00%)
metric.ts 9.03 KB 9.03 KB 0.00 KB (0.00%)
optic.ts 6.96 KB 6.96 KB 0.00 KB (0.00%)
pubsub.ts 15.21 KB 15.21 KB 0.00 KB (0.00%)
queue.ts 12.14 KB 12.14 KB 0.00 KB (0.00%)
schedule.ts 11.25 KB 11.25 KB 0.00 KB (0.00%)
schema-bigdecimal.ts 13.77 KB 13.77 KB 0.00 KB (0.00%)
schema-binary.ts 40.02 KB 40.02 KB 0.00 KB (0.00%)
schema-class.ts 21.11 KB 21.11 KB 0.00 KB (0.00%)
schema-fromJsonSchemaDocument.ts 32.15 KB 32.15 KB 0.00 KB (0.00%)
schema-representation-roundtrip.ts 27.32 KB 27.32 KB 0.00 KB (0.00%)
schema-string-transformation.ts 14.52 KB 14.52 KB 0.00 KB (0.00%)
schema-string.ts 12.03 KB 12.03 KB 0.00 KB (0.00%)
schema-template-literal.ts 16.09 KB 16.09 KB 0.00 KB (0.00%)
schema-toArbitrary.ts 38.36 KB 38.36 KB 0.00 KB (0.00%)
schema-toCodeDocument.ts 25.31 KB 25.31 KB 0.00 KB (0.00%)
schema-toCodecJson.ts 20.27 KB 20.27 KB 0.00 KB (0.00%)
schema-toEquivalence.ts 20.48 KB 20.48 KB 0.00 KB (0.00%)
schema-toFormatter.ts 20.58 KB 20.58 KB 0.00 KB (0.00%)
schema-toJsonSchemaDocument.ts 25.05 KB 25.05 KB 0.00 KB (0.00%)
schema-toRepresentation.ts 20.57 KB 20.57 KB 0.00 KB (0.00%)
schema.ts 20.32 KB 20.32 KB 0.00 KB (0.00%)
stm.ts 13.27 KB 13.27 KB 0.00 KB (0.00%)
stream.ts 9.99 KB 9.99 KB 0.00 KB (0.00%)

- Accept address bytes, segments, and structured parts across net types
- Update resolver inputs, tests, and API documentation
@fubhy
fubhy force-pushed the feat/net-from-input branch from ffe98f6 to 7c8ebdc Compare October 9, 2026 16:03
fubhy added 5 commits October 9, 2026 16:16
- Parse host entries through `NetAddress.ipFromInput`
- Update examples and tests to use string and tuple inputs
- Accept address inputs and IPv6 scope IDs in socket constructors
- Reject sparse address arrays and use shared inspection support
@fubhy
fubhy enabled auto-merge (squash) October 9, 2026 17:31
@fubhy
fubhy merged commit e7d84e4 into main Oct 9, 2026
13 checks passed
@fubhy
fubhy deleted the feat/net-from-input branch October 9, 2026 17:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant