Skip to content

[pull] master from reactive:master#137

Merged
pull[bot] merged 3 commits into
erickirt:masterfrom
reactive:master
Apr 28, 2026
Merged

[pull] master from reactive:master#137
pull[bot] merged 3 commits into
erickirt:masterfrom
reactive:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 28, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

ntucker and others added 3 commits April 28, 2026 09:16
* chore: rebase PR #3925 onto latest master

* pkg: Bump peerdeps of @data-client/react to support 0.17 (#3927)

* pkg: Bump peerdeps of @data-client/react to support 0.17

* pkg: Update yarn.lock for peerdep bump

* perf(normalizr): store consumer-facing journey at write time (#3928)

Move the per-hit paths.slice(1) (and the hasStringDeps filter loop)
out of GlobalCache.getResults and into the cache write.

GlobalCache.paths() already produces the placeholder-free,
function-free shape every consumer needs. Hand it to
WeakDependencyMap.set as the journey, and the cache-hit branch can
return that array by reference - no per-hit allocation, no per-hit
typeof === 'function' walk.

Safety: paths is now a shared reference held by every subsequent
hit. The contract that consumers must not mutate it was established
by the journey-mutation fix (PR #3925) and is exercised by the
existing globalCache.test.ts regression test.

* fix: Scalar reversion

* test(core): add getResponseMeta-paths integration test (non-GC angle) (#3929)

* test(core): replace getResponseMeta-countRef with getResponseMeta-paths

The previous integration test poked GCPolicy['entityCount'] directly to
prove the journey-mutation bug. Replace it with a test that asserts the
public-API consequence the bug creates outside of GC: every subscriber
to the same endpoint must observe the same expiresAt from
Controller.getResponseMeta().

This is the property the bug actually broke for non-GC users: with the
buggy paths.shift(), entityExpiresAt(paths, …) iterates a
progressively-shorter list, dropping the entity with the earliest
expiry first. Subscriber 2 observes a too-late expiresAt; subscriber 3+
observe Infinity and never refetch. Fires under ImmortalGCPolicy too,
since entityExpiresAt is unconditional whenever the endpoint has no
top-level meta.expiresAt — typical for state populated via
controller.set(Entity, …), SSR hydration, or useQuery.

Verified the assertion fails on the buggy paths.shift() (m3.expiresAt
returns FOO_2_EXPIRY instead of FOO_1_EXPIRY) and passes on the fix.

* test(core): keep existing countRef integration test alongside paths test

Restore the GC-side getResponseMeta-countRef.ts integration test that
the prior commit replaced. The two tests cover the journey-mutation
bug from complementary angles:

- getResponseMeta-countRef.ts: GC consumer of paths (entityCount
  under-counting → premature reaping under default GCPolicy).
- getResponseMeta-paths.ts: non-GC consumer of paths
  (entityExpiresAt → suppressed entity-expiry refetch; fires under
  ImmortalGCPolicy too).

Both pass on the fix; both fail on the buggy paths.shift().
#3930)

Bumps [postcss](https://github.com/postcss/postcss) from 8.5.9 to 8.5.12.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](postcss/postcss@8.5.9...8.5.12)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Apr 28, 2026
@pull pull Bot added the ⤵️ pull label Apr 28, 2026
@pull pull Bot merged commit bce280a into erickirt:master Apr 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant