Repository navigation
Conversation
…map-js Lockfile only, each within the range its parent already asks for: vite 8.3.0 -> 8.3.5, both vite 7.3.6 copies (Vitest, vite-node) -> 7.3.7, undici 6.28.1 -> 6.29.1 and 7.29.1 -> 7.30.1, shell-quote 1.10.0 -> 1.11.0, source-map-js 1.2.1 -> 1.2.2. vite 8.3.5 needs rolldown ~1.2.14 and postcss ^8.5.30; this takes those minimums (rolldown 1.2.14, published 14 October, rather than 1.2.16, published the day of this change), with nanoid 3.3.20 for postcss. package.json is untouched. None of these packages is bundled, but vite builds dist, and the build does change: rolldown and its minifier (oxc 0.150 -> 0.154) shape the same code differently. Built without minifying, the two bundles differ only in two blank loop bodies' spacing and in how one CommonJS module's top-level `this` is passed (rolldown 1.2.14's fix), which is the same object. THIRD_PARTY_LICENSES.md and the .d.ts files are identical. Checked: lint, typecheck, 105,720 tests, 60 browser tests (1 skipped, as on any local run). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
Try it: https://digitalcredentials.github.io/verifier-plugin/pr-39/ Updates on every push to this PR, and goes away when it closes. The browser tests run against this copy too. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #37 (PR 2 of 3). It leaves #37 open: the
@stablelib/ed25519alert waits on digitalcredentials/verifier-core#84, and the Vitest alerts are PR 3.What changes
package-lock.jsononly;package.jsonis untouched. Each package moves to a fixed version within the range its parent already asks for:^8.2.0)vite 8.3.5 needs newer rolldown (
~1.2.14) and postcss (^8.5.30), so those move too: rolldown 1.2.9 → 1.2.14 with its 15 per-platform binaries and@oxc-project/types0.150.0 → 0.154.0, postcss 8.5.28 → 8.5.30, and nanoid 3.3.19 → 3.3.20 for postcss. These are the minimum versions vite allows, not the latest: rolldown 1.2.16 was published on the day of this change, and a build tool that fresh isn't worth the risk.Every new version was published by the same project or maintainer as the one it replaces (vite, undici, rolldown, postcss and nanoid by their GitHub Actions, with npm provenance; shell-quote and source-map-js by their usual maintainers). Every changed entry's checksum matches the npm registry.
This should close 22 alerts: vite #9–#19, shell-quote #8, source-map-js #7, undici #29, #30, #32–#38. Six stay open:
@stablelib/ed25519#1, and Vitest,@vitest/mockerand tinypool #2, #3, #5, #6, #20 (PR 3).None of these ship, but the build that ships changes (verified)
None of these packages is bundled into
dist/:THIRD_PARTY_LICENSES.mdis byte-identical, as is every.d.ts. But vite buildsdist/, and the shipped JavaScript does change:dist/index.js: about 1,200 lines across 97 places;distribution-*.js): 3 places in its options-merge loop;Where it comes from. Built without minifying, the two bundles are the same code except for three harmless details: the spacing of two empty loop bodies in pako, and how rolldown 1.2.14 passes a CommonJS module's top-level
thisto ed2curve (still the same object; rolldown/rolldown#11135). Everything else is the minifier, oxc 0.150 → 0.154, which now writes the same logic differently (continuein a loop becomesif … else, different short names). Minifying is meant never to change behaviour, so the question is whether the new oxc keeps that promise on our code.Behaviour, side by side. Both builds'
verify()ran in one Node process on the same credentials, with the clock frozen and the network recorded once and replayed, so each saw identical inputs. Each run compared the full result and what every exported reader makes of it (summarise,listChecks,issuerIdentity,schemaFinding, and so on):3,810 runs, 0 differences:
Each was run with registry lookups on and off.
The harness catches a real fault: with one step deleted from the new build's frame code, the did:web cases flip from verified to not verified (16 differences).
Coverage: node's own coverage shows 42 of the 97 changed places in
index.jsran, including jsonld (expand, frame and compact), theajvschema check, pako's decompression (status lists) and verifier-core's checks.Places that never ran:
toRDF.|0on values that are already 32-bit integers, and& 4294967295written as| 0.credentialsetter;In every case, a removed
continueorreturnwas the last thing in its loop or function, with no labels orfinallyblocks, and the renamed variables shadow nothing new.Limits:
<verifier-credential>element on a page.What was exposed
These are tools on developer machines and in CI. Nothing here reaches earners or the wallet. Each advisory names its conditions. Read against our setup (reasoned from the advisories and our config; not tested):
server.hostnor--host.checkServerIdentityfunction; the cache poisoning needs undici's shared cache composed with redirects. Checked: our two HTTP clients use undici only to turn a caller'sagentoption into an undici dispatcher, and nothing in our code ornode_modulesoutside undici mentionscheckServerIdentityor undici's cache or redirect interceptors.quote()called on attacker-controlled text. It arrives through React Native's developer tools, which nothing here runs.Checks
npm ci. The builds are byte-identical to the author's, and identical on Node 24.npm ciinstalls exactly the lockfile's 482 packages.util.inspect, soundefinedand key order count. It also compares requests and console output and calls all 14 exports, in both load orders. The reviewer ran it on the first 3,722 runs and I ran it on the did:web and ECDSA 88. All are identical, and the broken frame code is caught.localhost. So CI's browser tests against this PR's preview are the first real-browser run of the new minified code.Result: to be filled in after the preview is up.
Reaching the wallet
Nothing changes in the wallet until its verifier-plugin pin is bumped (it pins release commit a4ca3e6). When it is, it gets a
dist/minified by the new oxc, which is what the side-by-side run and the smoke test cover.🤖 Generated with Claude Code