From 55dfbb7baf212c12a97ef708eb8e5888a4fcd17e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 22 Aug 2026 07:18:17 +0000 Subject: [PATCH] Version Packages (next) --- .changeset/pre.json | 1 + CHANGELOG.md | 43 +++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index d0943989..d157a13b 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -30,6 +30,7 @@ "lazy-paths-proxy", "lazy-route-subtrees", "link-state-collector-instance", + "live-query-channel-prototype", "metadata-detection-for-get", "navigate-url-semantics", "own-single-flight-and-nojs", diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f6f18f5..61d8d833 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,48 @@ # @solidjs/router +## 2.0.0-next.18 + +### Patch Changes + +- c81606b: `liveQuery()` — keyed live queries over value-shaped streams (prototype) + + Declares a keyed live query: an async-iterable producer whose yields are + successive values of one logical query, re-yielding current state on every + invocation. liveQuery IS the live declaration — no separate wrapper needed: + server functions are declared GET at creation (like `query`), the server + face brands the resolved iterable so SSR live policy applies (document face + renders the first value, hydration adopts it and reconnects), and the + client channel owns reconnect-with-backoff when a connected stream dies. + + One connection per (name + args) key is shared by every consumer: late + subscribers receive the latest value immediately, delivery is latest-wins, + and the connection closes when the last consumer leaves (microtask linger + so a re-running memo doesn't thrash it). Connections are lazy — calling the + function returns a live-branded iterable; the first pull connects — so + hydration traces open nothing. Retry is for transient deaths only: a + definite rejection (4xx — the transport stamps HTTP statuses onto + failures) ends the channel and surfaces the error to consumers, like a + first-connect failure does. On the server, channels are request-scoped: + every consumer of a key within one render observes the same first value + (the record is retained past teardown for replay), and separate requests + never share connections. Calling under preload intent warms the channel + (a temporary hold spans the preload window), so navigation renders against + an already-connected stream instead of holding the transition on connect + plus first yield. + + Live queries participate in both router data protocols. Explicit + `revalidate(key)` reconnects (the producer re-yields current state on + invocation). Single-flight participation is delivery-side: a mutation's + flight payload pushes straight into open channels — the mutation response + is the round trip — while the post-mutation sweep leaves the healthy + connection in place, since the live stream is itself the freshness + mechanism. New `registerRevalidateHook`/`registerFlightDataHook` seams in + query let keyed stores join those protocols without coupling. + + The callable carries the `query` conventions (`key`, `keyFor`) plus a + reactive `status(...args)` read ("idle" | "connecting" | "connected" | + "reconnecting" | "closed"). + ## 2.0.0-next.17 ### Patch Changes diff --git a/package.json b/package.json index 38a4f5c0..b823b690 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "Ryan Turnquist" ], "license": "MIT", - "version": "2.0.0-next.17", + "version": "2.0.0-next.18", "homepage": "https://github.com/solidjs/solid-router#readme", "repository": { "type": "git",