From 4ee467f91254fdd5d9a1c328edd2e3fc5b541943 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 19 Mar 2026 12:06:03 +0100 Subject: [PATCH 1/4] tools: do not swallow error in `lint-nix` workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/62292 Reviewed-By: René Reviewed-By: Colin Ihrig Reviewed-By: Tierney Cyren --- .github/workflows/linters.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 3cb2689061d67b..4ac3f26dc66800 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -154,7 +154,12 @@ jobs: run: | nix-shell -I nixpkgs=./tools/nix/pkgs.nix -p 'nixfmt-tree' --run ' treefmt --quiet --ci - ' || git --no-pager diff --exit-code + ' && EXIT_CODE="$?" || EXIT_CODE="$?" + if [ "$EXIT_CODE" != "0" ] + then + git --no-pager diff || true + exit "$EXIT_CODE" + fi lint-py: if: github.event.pull_request.draft == false From b328bf74bd4fba4dc13b948505a4b309c87d2258 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Tue, 17 Mar 2026 13:48:16 +0100 Subject: [PATCH 2/4] lib,src: implement QuotaExceededError as DOMException-derived interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement QuotaExceededError as a DOMException-derived interface per the WebIDL specification update. QuotaExceededError is now a proper constructor exposed as a global [Exposed=*] interface that extends DOMException with optional `quota` and `requested` attributes (both nullable doubles, defaulting to null). The constructor validates that quota and requested are finite, non-negative, and that requested is not less than quota when both are provided. QuotaExceededError is [Serializable] and supports structuredClone, preserving the quota and requested values across the serialization boundary. Callers updated: - crypto.getRandomValues() now throws a QuotaExceededError instance - WebStorage (C++) now constructs QuotaExceededError directly Refs: https://redirect.github.com/whatwg/webidl/pull/1465 Fixes: https://github.com/nodejs/node/issues/58987 PR-URL: https://github.com/nodejs/node/pull/62293 Reviewed-By: Mattias Buelens Reviewed-By: Chengzhong Wu Reviewed-By: Michaël Zasso Reviewed-By: Colin Ihrig --- doc/api/globals.md | 8 + eslint.config.mjs | 1 + lib/eslint.config_partial.mjs | 6 +- .../bootstrap/web/exposed-wildcard.js | 5 + lib/internal/crypto/random.js | 6 +- lib/internal/per_context/domexception.js | 91 ++++++++ lib/internal/worker/clone_dom_exception.js | 6 +- src/node_messaging.cc | 15 ++ src/node_webstorage.cc | 18 +- test/common/globals.js | 1 + test/parallel/test-quotaexceedederror.js | 199 ++++++++++++++++++ test/parallel/test-webcrypto-random.js | 10 +- test/parallel/test-webstorage.js | 53 +++-- test/wpt/status/WebCryptoAPI.cjs | 16 -- test/wpt/status/webstorage.json | 16 -- 15 files changed, 376 insertions(+), 75 deletions(-) create mode 100644 test/parallel/test-quotaexceedederror.js diff --git a/doc/api/globals.md b/doc/api/globals.md index 47340c897b4a36..6c0caca06d3dbb 100644 --- a/doc/api/globals.md +++ b/doc/api/globals.md @@ -976,6 +976,14 @@ DataHandler.prototype.load = async function load(key) { }; ``` +## Class: `QuotaExceededError` + + + +The WHATWG {QuotaExceededError} class. Extends {DOMException}. + ## Class: `ReadableByteStreamController`