From 09c0954645671c2d1777bd43cb2cd7e6acdcc4ee Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Sat, 17 Oct 2026 14:00:03 +0200 Subject: [PATCH] chore: switch from vendored devalue fork to upstream devalue 6 `devalue` 6 ships the `js` tagged-template replacer API from sveltejs/devalue#182, which is what the fork existed for. The replacer now returns `js` fragments, so a signal inside a factory's args and in a sibling position revives as one instance. Also adds unit round-trips for Temporal types, typed arrays, `DataView`, `URL`, sparse arrays and special numbers. --- .oxfmtrc.json | 2 +- .oxlintrc.json | 1 - TODO.md | 2 +- pnpm-lock.yaml | 9 + src/package.json | 3 +- src/server/serialization.test.ts | 155 +++++++- src/server/serialization.ts | 61 ++-- src/vendor/devalue/LICENSE | 7 - src/vendor/devalue/constants.js | 12 - src/vendor/devalue/index.d.ts | 2 - src/vendor/devalue/index.js | 6 - src/vendor/devalue/uneval.js | 583 ------------------------------- src/vendor/devalue/utils.js | 160 --------- 13 files changed, 196 insertions(+), 807 deletions(-) delete mode 100644 src/vendor/devalue/LICENSE delete mode 100644 src/vendor/devalue/constants.js delete mode 100644 src/vendor/devalue/index.d.ts delete mode 100644 src/vendor/devalue/index.js delete mode 100644 src/vendor/devalue/uneval.js delete mode 100644 src/vendor/devalue/utils.js diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 2966f36d4f5..faf34ad4ee5 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -2,5 +2,5 @@ "$schema": "./node_modules/oxfmt/configuration_schema.json", "printWidth": 100, "proseWrap": "never", - "ignorePatterns": [".fresh", ".output", "www/public", "src/vendor"] + "ignorePatterns": [".fresh", ".output", "www/public"] } diff --git a/.oxlintrc.json b/.oxlintrc.json index 2aba2d32bf4..dc72033c28e 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,6 +1,5 @@ { "$schema": "https://raw.githubusercontent.com/oxc-project/oxc/main/npm/oxlint/configuration_schema.json", - "ignorePatterns": ["src/vendor"], "overrides": [ { "files": ["**/src/**/*.{ts,tsx}"], diff --git a/TODO.md b/TODO.md index eee0dd7f86a..761fb3a96c0 100644 --- a/TODO.md +++ b/TODO.md @@ -55,7 +55,7 @@ Gaps surfaced by comparing against the Fresh 2 test suite. (Programmatic route r - [x] Partial-navigation client e2e — scroll reset on a forward swap, scroll restoration on back/forward traverse, full-page fallback when a partial fetch 500s, and native in-page hash-link scrolling (no swap/reload). All in `tests/e2e/partials.spec.ts`. Scroll reset/restore is handled entirely by the Navigation API's default `intercept({ scroll: "after-transition" })` (no fresh3 code needed) — the test drives navigation via a JS `.click()` (`clickViaJs` in `util.ts`) so Playwright's scroll-into-view doesn't reset the page to the top before the navigation fires. - [ ] Remaining partial client e2e: focus reset after a swap, and request-abort behaviour when one navigation supersedes another in flight. - [ ] Head e2e gaps: multiple islands each rendering `` (merge), reactive `` content updates post-hydration, and `