Skip to content

feat: package sqlite kv-store backend for stricter browser envs#23089

Merged
mverzilli merged 5 commits into
merge-train/fairiesfrom
martin/wallet-sdk-browser-entry-point
May 13, 2026
Merged

feat: package sqlite kv-store backend for stricter browser envs#23089
mverzilli merged 5 commits into
merge-train/fairiesfrom
martin/wallet-sdk-browser-entry-point

Conversation

@mverzilli
Copy link
Copy Markdown
Contributor

While the current sqlite backend for kv-store works fine in vanilla browser environments, browser policies can be stricter for extensions. For example, Chromium's MV3 doesn't accept extensions using eval or freely instantiating Function's. This PR deals with said issues so that eventual wallet implementers don't have to.

mverzilli and others added 2 commits May 8, 2026 11:04
… builds

Adds a package-internal subpath import (#msgpackr) with a 'browser'
condition pointing at msgpackr/index-no-eval. Node consumers continue
to get the regular runtime-codegen build. Browser bundlers automatically
pick the CSP-safe variant via the standard browser condition.

Also updates vitest.config.ts to explicitly include msgpackr/index-no-eval
in optimizeDeps to avoid Vite discovery warnings during browser tests.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream ordered-binary performs dynamic code generation at module-init
to set up an unrolled string reader. That trips MV3 CSP and there's no
CSP-safe shipped build. We only consume three symbols (toBufferKey,
fromBufferKey, MAXIMUM_KEY) and none touch the dynamically-generated
readString path, so vendor a minimal CSP-safe implementation under
#ordered-binary's browser condition. Node consumers still get upstream.
A parity test on a representative key set guards against divergence on
future bumps.

Also adds Buffer.compare as a static method to the browser Buffer stub
so the parity test can byte-compare outputs in browser (Chromium) mode.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@mverzilli mverzilli requested a review from Thunkar May 8, 2026 12:20
@mverzilli mverzilli enabled auto-merge (squash) May 8, 2026 12:23
@AztecBot
Copy link
Copy Markdown
Collaborator

Flakey Tests

🤖 says: This CI run detected 1 tests that failed, but were tolerated due to a .test_patterns.yml entry.

\033FLAKED\033 (8;;http://ci.aztec-labs.com/6c4361abaa88f2df�6c4361abaa88f2df8;;�):  yarn-project/end-to-end/scripts/run_test.sh simple src/e2e_epochs/epochs_mbps.pipeline.parallel.test.ts "pipelining builds blocks using slot plus 1 proposer and proves them" (407s) (code: 0) group:e2e-p2p-epoch-flakes

@mverzilli mverzilli merged commit b64522f into merge-train/fairies May 13, 2026
14 checks passed
@mverzilli mverzilli deleted the martin/wallet-sdk-browser-entry-point branch May 13, 2026 09:45
AztecBot pushed a commit that referenced this pull request May 13, 2026
While the current sqlite backend for kv-store works fine in vanilla
browser environments, browser policies can be stricter for extensions.
For example, Chromium's MV3 doesn't accept extensions using `eval` or
freely instantiating `Function`'s. This PR deals with said issues so
that eventual wallet implementers don't have to.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AztecBot
Copy link
Copy Markdown
Collaborator

✅ Successfully backported to backport-to-v4-next-staging #23236.

AztecBot added a commit that referenced this pull request May 14, 2026
BEGIN_COMMIT_OVERRIDE
feat: package sqlite kv-store backend for stricter browser envs (#23089)
fix(pxe): sync target contract before cross-contract utility call
(#23225)
fix(ci): swap slack_notify args in CLI acceptance test (#23241)
feat: optimize get next app tag as sender (#23239)
fix(noir): noirfmt nested_utility_contract main.nr (#23246)
chore(aztec-nr): mark emit_event_in_public as #[inline_never] to shrink
public dispatch (#23161)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants