Skip to content

chore(deps): update dependency @effect/platform-node to v4.1.0 - autoclosed - #247

Closed
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/effect-platform-node-4.x
Closed

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/effect-platform-node-4.x

Conversation

@renovate

@renovate renovate Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@effect/platform-node (source) 4.0.5 → 4.1.0 age confidence

Release Notes

Effect-TS/effect (@​effect/platform-node)

v4.1.0

Compare Source

Minor Changes
  • #​8829 8f23668 Thanks @​fubhy! - Replace effect/Crypto with family-specific effect/crypto/* services, opaque keys, CryptoError, a configurable WebCrypto reference and key schemas in effect/Schema. Encoding secret or private keys through byte/format schemas requires { allowEncode: true }.
Breaking changes
  • Use SecureRandom for randomness and UUIDs, and Digest with algorithm values such as Digest.sha256 for hashing. Replace effect/testing/TestCrypto with Layer.mock for the required services.
  • Provide crypto explicitly; it is no longer included in the runtime *Services bundles. NodeCrypto, BunCrypto, DenoCrypto and BrowserCrypto offer individual family layers and a combined layer, supplying SecureRandom where needed. Core modules offer layerWebCrypto.
  • Provide Digest.Digest instead of Crypto.Crypto to SqlMessageStorage and SingleRunner, and instead of EventLogEncryption to SqlEventLogServerEncrypted.makeStorage and layerStorage. Replace EventLogEncryption.sha256String with digest.digestHex(Digest.sha256, bytes).

Existing workflow ID, activity idempotency key and event log table-name encodings are unchanged.

Event log encryption, identity key derivation and session authentication now run on Aead, Digest, Signature and SecureRandom. EventLogEncryption.make and EventLogEncryption.layer take those services from context, so Node apps can use the NodeCrypto layers. EventLogEncryption.layerSubtle and the session auth functions use the Web Crypto layers on the WebCrypto reference instead of globalThis.crypto. Existing identities, derived signing keys and encrypted batches are unchanged.

UUIDv7 and ULID generation is now monotonic below the maximum 48-bit timestamp, including within a millisecond and across clock rollback. Ordering is per SecureRandom instance; the unsafe helpers and model UUIDv7 defaults share per-realm ordering.

  • #​10087 472c469 Thanks @​effect-bot! - Node.js 22.19.0 (required by undici 8) is now the minimum for @effect/platform-node, @effect/platform-node-shared, @effect/opentelemetry and @effect/docgen, up from 18.

    NodeSocket WebSocket clients now use Node's global WebSocket instead of ws, so client-only usage no longer bundles ws.

    Breaking: ws moved to a new NodeWS module.

    • NodeSocket.NodeWS and BunSocket.NodeWS are removed. Import NodeWS from @effect/platform-node or @effect/platform-node-shared (on Bun, import ws directly). Use NodeWS.WebSocket in place of NodeSocket.NodeWS.default.
    • NodeSocket.layerWebSocketConstructorWS is removed. Use NodeWS.layerWebSocketConstructor.

    Behaviour changes for clients that pass handshake headers, which previously used ws. Use NodeWS.layerWebSocketConstructor to keep the old behaviour:

    • Reads cannot be paused. Incoming frames are buffered without limit, and a configured highWaterMark fails the socket with a SocketReadError.
    • Connection errors are a generic ErrorEvent, so SocketOpenError causes lack the underlying error code.
    • The Socket.WebSocket service is a global WebSocket, so ws instanceof checks and ws-only methods such as terminate() and ping() no longer apply.
    • A custom Host header is ignored.
    • Outgoing messages are not compressed. Incoming permessage-deflate messages are still decompressed.
    • Connections use undici's global dispatcher instead of http.globalAgent / https.globalAgent.
Patch Changes

v4.0.7

Compare Source

Patch Changes

v4.0.6

Compare Source

Patch Changes
  • #​9506 679f956 Thanks @​tim-smart! - Use Effect.fnUntraced for internal functions that returned Effect.gen.

  • #​9262 51930c0 Thanks @​effect-bot! - Return a typed multipart parse error instead of a defect when a multipart request is missing its boundary.

  • #​9402 d1201f0 Thanks @​effect-bot! - Release writables created by NodeSink.fromWritable and fromWritableChannel when upstream fails or the sink is interrupted, preserving the original exit cause. Writables using endOnDone: false remain open. Preserve stream body encoding errors in the Node HTTP client instead of reporting transport errors caused by request cleanup.

  • #​9575 c29ddd8 Thanks @​tim-smart! - Add streaming request payloads to HttpApi. An endpoint can declare HttpApiSchema.StreamUint8Array or the new HttpApiSchema.StreamNdjson({ schema }) as its payload, and the handler receives a lazy Stream that reads the body as it pulls. Bad NDJSON lines fail the stream with HttpApiSchemaError (400). The new maxBytes and maxElementBytes limits fail it with the new HttpApiPayloadTooLarge (413), and a content-length over maxBytes is rejected before the handler runs. StreamNdjson also works as a success response.

    HttpApiClient sends a Stream payload without buffering it and infers the stream's requirements. HttpApiTest passes stream payloads through unbuffered. OpenApi.fromApi marks streaming request bodies with x-effect-stream, and openapi-generator maps them, and NDJSON or JSON Lines bodies with an itemSchema, back to StreamUint8Array and StreamNdjson.

    The Node server drains up to 256 KiB of a body the handler left unread, then closes the connection, instead of reading the whole upload or leaving the socket stuck.

  • 3934c0c Thanks @​tim-smart! - Return 413 instead of 400 when buffered or decompressed request bodies exceed their size limit, while preserving 400 for other parse failures. Node HTTP servers drain oversized bodies so the response can reach the client without destroying the socket. Node stream readers expose MaxBytesError and an optional destroyOnOverflow setting; their default destruction behavior is unchanged.

  • #​9339 9a680d6 Thanks @​fubhy! - Add raw HTTP/1.1 upgrades through HttpClientRequest.upgrade, HttpClientResponse.upgrade, the Node HTTP server, and HttpApiSchema.Upgrade. Node clients expose the upgraded connection as a Socket; HttpApi clients return { headers, socket } and OpenAPI documents the 101 response.

    Custom HttpClientResponse implementations must add upgrade. Fetch and XMLHttpRequest reject upgrade requests with a TransportError before anything is sent; Bun and Deno servers still support only WebSocket upgrades.

  • #​9417 7f823c1 Thanks @​fubhy! - Fix HTTP response framing: omit bodies for 204, 205 and 304, and remove content-length for 204 and 205. Node now aborts responses whose bodies do not match content-length. Deno and Bun preserve raw Web Response objects when merging headers, and Deno preserves their status and headers for HEAD requests.

  • #​9415 6e614e6 Thanks @​fubhy! - - Fix HTTPS detection in HttpServerRequest.toURL and tracing. An exact http or https in x-forwarded-proto takes precedence; otherwise, infer HTTPS from originalUrl. Paths starting with // preserve the request host.

    • Node server requests now expose an absolute originalUrl when a Host header is present, fixing HttpMiddleware.searchParamsParser. Use url instead of originalUrl to read the path. Hostless requests are unchanged.
    • For absolute-form Node requests, derive url and headers.host from the request target, ignoring a conflicting Host header.
  • #​9375 5a2d19f Thanks @​fubhy! - Use HTTP/2 authority for the exposed host header and request URL, even when Host is missing or conflicting. In Deno, also use the target authority for HTTP/1.1 absolute-form requests.

  • #​9566 9972b4f Thanks @​tim-smart! - Keep streaming request bodies uploading after NodeHttpClient.layerNodeHttp receives response headers, allowing bidirectional request and response streaming. Stop unfinished uploads when the response is consumed, the connection closes or the request is cancelled, including with keep-alive agents.

  • #​9413 29bee6f Thanks @​fubhy! - Fix NodeHttpClient.layerUndici hanging when sending HttpBody.formData request bodies.

  • #​9564 ab0f384 Thanks @​tim-smart! - Defer 100 Continue responses until the application starts reading the request body, so early rejections of Expect: 100-continue requests do not prompt clients to upload.

  • #​9710 bb49b9a Thanks @​effect-bot! - Support HTTP/2 servers in NodeHttpServer. make, layerServer, layer and layerConfig accept Http2.createServer() and Http2.createSecureServer(), including allowHTTP1, without a cast. HTTP/2 requests no longer expose pseudo-headers, so HttpServerRequest.toWeb works, and toURL uses the request's :scheme and :authority. Responses drop the connection-specific headers HTTP/2 forbids instead of being lost, a body that fails after the headers were sent resets the stream with INTERNAL_ERROR instead of ending cleanly, and shutdown closes idle HTTP/2 sessions, so it no longer waits for the graceful timeout on Node 22.

    Breaking (types only): NodeHttpServerRequest.toIncomingMessage and toServerResponse now return Http.IncomingMessage | Http2.Http2ServerRequest and Http.ServerResponse | Http2.Http2ServerResponse. Code that uses members only the HTTP/1.1 objects have needs to narrow first, for example on httpVersionMajor.

  • #​9412 0317f20 Thanks @​fubhy! - NodeHttpServer now responds with a 500 when a handler returns a status outside 200-599. Previously a 1xx status left the client without a final response, and statuses above 599 were sent as is.

  • #​9380 5a13d9d Thanks @​fubhy! - Fix NodeHttpServer requests hanging when Node rejects the response headers. The server now sends a fallback error response, or destroys the response if that also fails.

  • #​9255 e24cd76 Thanks @​jayhemnani9910! - Abort the connection when a streamed response body fails after headers are sent. Previously the response ended normally, so clients treated the truncated body as complete.

  • #​9458 26de861 Thanks @​tim-smart! - Avoid loading Node's internal undici on cold start when importing effect/Schema or starting a Node HTTP server before any web API is used. Schema.FormData resolves the global constructor during validation, and @effect/platform-node loads node:http and node:https without evaluating their lazy web API exports.

  • #​9701 e618f10 Thanks @​effect-bot! - Require an explicit trusted proxy policy before applying forwarded headers.

    HttpMiddleware.xForwardedHeaders now takes { trustedProxies } and only applies X-Forwarded-* headers when the connecting peer is trusted. X-Forwarded-For is read from the right, skipping trusted proxies, and X-Forwarded-Host / X-Forwarded-Proto are only used when they line up with it.

    HttpServerRequest.toURL no longer reads x-forwarded-proto directly. It uses the new request.protocol, set by the trusted proxy middleware, before the transport scheme. The connecting peer stays available as request.peerAddress.

    import { HttpMiddleware } from "effect/http"
    import { IpNetwork } from "effect/net"
    
    // before
    HttpMiddleware.xForwardedHeaders
    
    // after
    HttpMiddleware.xForwardedHeaders({
      trustedProxies: [IpNetwork.fromStringUnsafe("10.0.0.0/8")]
    })
  • #​9503 74532b6 Thanks @​tim-smart! - Update repository dependencies to their latest compatible releases.

  • #​9280 da91aae Thanks @​okarin1511! - Keep the thrown error as the cause when a Browser or Deno worker runner receives an error event, and fix the grammar of the messageerror failure message.

  • Updated dependencies [ce13a48, f3bbbb4, 5547315, 6093cfb, 30319d5, 74a7596, bfb32a3, f8bf7f4, 7f3d3df, db1046d, 3c4f88a, 916e709, 916f843, 66ec757, daac06f, c2552ec, b02c1cd, 1855f1d, 683ed2c, ac68940, 22a8401, c53c194, ca6d1cc, 47940c5, e8b24ef, 2e8aae0, ad7497b, 7f504a3, 99e365d, 954067d, 3e1a035, 41a1fe7, bcb3a86, 739d3d1, ed4da35, 3d84e19, cc00906, 09ba1f5, 9ff1a73, 06bc532, 97bfd84, 25efaef, c10335b, a808972, 20e844c, b9f73f3, 5739878, 28acdf3, 59b6396, 0bccc9c, fed70de, 82648a2, afb5f32, 28813f5, 0fae934, f260830, 19b63eb, 14db221, 679f956, b72707c, 44c8c1d, 1e7909b, 0611a65, 2fadc65, feb6ce5, 5a2ed53, c8d26a4, 0c8b446, 05c3409, b04191b, 05c3409, 4067e64, e04563d, 02d7fc5, 561d2a1, 8fe2dcc, a8086fa, 88a33b4, e77372a, 3dd4388, ba2b00c, a049d4a, 84aeede, 43e5e19, 77bbf16, 6af3a47, aac8d21, 84c8dc4, 78d1988, 5676a2a, 4b437bf, 1af11fd, 716f8df, ee27718, 4d86d1b, 5462ed7, 658837c, 00261cc, 7cccb93, 7c98228, 5a8e248, 8037a65, 25912db, 7f32606, 0386f88, 403298a, d1201f0, 5a3ebc0, fac2191, fdb12dc, 97909b8, c3983f4, 3a5e65e, 8b40fbc, 3f3e119, 7c7b8ed, d4f71bc, c66241e, f0e941e, 5f8a6e5, 2800a09, e9749b0, eaef09c, a3c56e5, bb61152, e9c842b, 6d8c8e2, 1f28187, 0b9842b, c29ddd8, 84c3405, 3934c0c, 048e7c8, 1121334, 9a680d6, 85e2aee, 34ec440, 343a149, 915117b, 7f823c1, 6e614e6, 9990b39, 22bf781, 41f08b7, e8482ca, 5ae85fa, [c477a0a](https://redirect.github.com/Effect-TS/effect/commit/c

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@github-actions

Copy link
Copy Markdown

@renovate
renovate Bot force-pushed the renovate/effect-platform-node-4.x branch from 42039a2 to cc849bd Compare October 27, 2026 16:02
@renovate
renovate Bot force-pushed the renovate/effect-platform-node-4.x branch from cc849bd to 26ee15c Compare October 29, 2026 12:34
@renovate renovate Bot changed the title chore(deps): update dependency @effect/platform-node to v4.0.6 chore(deps): update dependency @effect/platform-node to v4.0.7 Oct 29, 2026
@renovate
renovate Bot force-pushed the renovate/effect-platform-node-4.x branch from 26ee15c to 3077b8b Compare October 29, 2026 18:23
@renovate
renovate Bot force-pushed the renovate/effect-platform-node-4.x branch from 3077b8b to 6360b91 Compare October 29, 2026 23:04
@renovate
renovate Bot force-pushed the renovate/effect-platform-node-4.x branch from 6360b91 to 3be735a Compare October 30, 2026 00:06
@renovate
renovate Bot force-pushed the renovate/effect-platform-node-4.x branch from 3be735a to 2a9b87d Compare October 30, 2026 10:27
@renovate renovate Bot changed the title chore(deps): update dependency @effect/platform-node to v4.0.7 chore(deps): update dependency @effect/platform-node to v4.1.0 Oct 30, 2026
@renovate
renovate Bot force-pushed the renovate/effect-platform-node-4.x branch from 2a9b87d to 9f49b34 Compare October 30, 2026 10:34
@renovate
renovate Bot force-pushed the renovate/effect-platform-node-4.x branch from 9f49b34 to 26df8e2 Compare October 30, 2026 10:52
@renovate
renovate Bot force-pushed the renovate/effect-platform-node-4.x branch from 26df8e2 to 0c6da7c Compare October 30, 2026 14:36
@renovate renovate Bot changed the title chore(deps): update dependency @effect/platform-node to v4.1.0 chore(deps): update dependency @effect/platform-node to v4.1.0 - autoclosed Oct 30, 2026
@renovate renovate Bot closed this Oct 30, 2026
@renovate
renovate Bot deleted the renovate/effect-platform-node-4.x branch October 30, 2026 15:14

This branch had an error being deployed

1 failed deployment
preview — 0c6da7c6 Deployed Oct 30, 2026 by renovate[bot] via Deploy the preview #100
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants