diff --git a/README.md b/README.md index ba851ef..cd2f277 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,16 @@ Content-Security-Policy: require-trusted-types-for 'script'; trusted-types defau /> ``` +...or, when you can place neither, let DOMFortify inject that `` for you with one config flag: + +```js +window.DOMFortifyConfig = { INJECT_META: true }; +``` + +This is best-effort and only takes when DOMFortify runs during the initial parse (inline, first thing +in ``); a header or hand-placed `` is still sturdier. Confirm it took with +`status().enforcementActive`. Details in [Turning enforcement on](#turning-enforcement-on-advanced). + Second, load the sanitizer and then DOMFortify **first thing in ``**, before anything an attacker could reach. Pin both with SRI so a bad CDN day fails closed instead of open: diff --git a/dist/fortify.cjs.js b/dist/fortify.cjs.js index edff658..ae5bbcc 100644 --- a/dist/fortify.cjs.js +++ b/dist/fortify.cjs.js @@ -227,8 +227,20 @@ function init(options = {}) { if (installed) return cachedStatus; installed = true; + // The violation reporter is observability, never control flow. Wrap it so a throwing ON_VIOLATION + // can neither abort init() (which would leave us installed with a null status) nor turn a + // fail-closed sink - one that should quietly return null - into a thrown exception. const onv = cfg(options, 'ON_VIOLATION'); - const report = typeof onv === 'function' ? onv : () => { }; + const report = typeof onv === 'function' + ? (code, detail) => { + try { + onv(code, detail); + } + catch { + /* a misbehaving reporter must never break the policy */ + } + } + : () => { }; const status = { version: VERSION, ttSupported: !!TT, @@ -243,9 +255,11 @@ function init(options = {}) { const done = (reason, code) => { status.protected = status.defaultPolicyOwned && status.enforcementActive && status.sanitizerReady; status.reason = reason; - if (code) - report(code, status); + // Freeze the snapshot first, then report it: the reporter sees exactly the authoritative status + // that gets cached and returned, and has no window to mutate the cached copy. cachedStatus = Object.freeze({ ...status }); + if (code) + report(code, cachedStatus); return cachedStatus; }; const url = loc && typeof loc.href !== 'undefined' ? String(loc.href) : ''; diff --git a/dist/fortify.cjs.js.map b/dist/fortify.cjs.js.map index c1974ee..ea0cdc4 100644 --- a/dist/fortify.cjs.js.map +++ b/dist/fortify.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"fortify.cjs.js","sources":["../src/internal.ts","../src/fortify.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fortify.cjs.js","sources":["../src/internal.ts","../src/fortify.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fortify.es.mjs b/dist/fortify.es.mjs index 1eae0c7..5dd9143 100644 --- a/dist/fortify.es.mjs +++ b/dist/fortify.es.mjs @@ -223,8 +223,20 @@ function init(options = {}) { if (installed) return cachedStatus; installed = true; + // The violation reporter is observability, never control flow. Wrap it so a throwing ON_VIOLATION + // can neither abort init() (which would leave us installed with a null status) nor turn a + // fail-closed sink - one that should quietly return null - into a thrown exception. const onv = cfg(options, 'ON_VIOLATION'); - const report = typeof onv === 'function' ? onv : () => { }; + const report = typeof onv === 'function' + ? (code, detail) => { + try { + onv(code, detail); + } + catch { + /* a misbehaving reporter must never break the policy */ + } + } + : () => { }; const status = { version: VERSION, ttSupported: !!TT, @@ -239,9 +251,11 @@ function init(options = {}) { const done = (reason, code) => { status.protected = status.defaultPolicyOwned && status.enforcementActive && status.sanitizerReady; status.reason = reason; - if (code) - report(code, status); + // Freeze the snapshot first, then report it: the reporter sees exactly the authoritative status + // that gets cached and returned, and has no window to mutate the cached copy. cachedStatus = Object.freeze({ ...status }); + if (code) + report(code, cachedStatus); return cachedStatus; }; const url = loc && typeof loc.href !== 'undefined' ? String(loc.href) : ''; diff --git a/dist/fortify.es.mjs.map b/dist/fortify.es.mjs.map index 6b56a43..0e1a0fa 100644 --- a/dist/fortify.es.mjs.map +++ b/dist/fortify.es.mjs.map @@ -1 +1 @@ -{"version":3,"file":"fortify.es.mjs","sources":["../src/internal.ts","../src/fortify.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fortify.es.mjs","sources":["../src/internal.ts","../src/fortify.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fortify.js b/dist/fortify.js index be3f02a..99cd7aa 100644 --- a/dist/fortify.js +++ b/dist/fortify.js @@ -226,8 +226,20 @@ if (installed) return cachedStatus; installed = true; + // The violation reporter is observability, never control flow. Wrap it so a throwing ON_VIOLATION + // can neither abort init() (which would leave us installed with a null status) nor turn a + // fail-closed sink - one that should quietly return null - into a thrown exception. const onv = cfg(options, 'ON_VIOLATION'); - const report = typeof onv === 'function' ? onv : () => { }; + const report = typeof onv === 'function' + ? (code, detail) => { + try { + onv(code, detail); + } + catch { + /* a misbehaving reporter must never break the policy */ + } + } + : () => { }; const status = { version: VERSION, ttSupported: !!TT, @@ -242,9 +254,11 @@ const done = (reason, code) => { status.protected = status.defaultPolicyOwned && status.enforcementActive && status.sanitizerReady; status.reason = reason; - if (code) - report(code, status); + // Freeze the snapshot first, then report it: the reporter sees exactly the authoritative status + // that gets cached and returned, and has no window to mutate the cached copy. cachedStatus = Object.freeze({ ...status }); + if (code) + report(code, cachedStatus); return cachedStatus; }; const url = loc && typeof loc.href !== 'undefined' ? String(loc.href) : ''; diff --git a/dist/fortify.js.map b/dist/fortify.js.map index c58fc7b..9cf196e 100644 --- a/dist/fortify.js.map +++ b/dist/fortify.js.map @@ -1 +1 @@ -{"version":3,"file":"fortify.js","sources":["../src/internal.ts","../src/fortify.ts","../src/auto.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fortify.js","sources":["../src/internal.ts","../src/fortify.ts","../src/auto.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fortify.min.js b/dist/fortify.min.js index 97a9ccf..b56e0a1 100644 --- a/dist/fortify.min.js +++ b/dist/fortify.min.js @@ -1,3 +1,3 @@ /*! DOMFortify 0.2.0 | (c) Cure53 and contributors | (MPL-2.0 OR Apache-2.0) */ -!function(){"use strict";const t=Object.prototype.hasOwnProperty;function e(e,n){return null!=e&&t.call(e,n)}function n(t,n){return e(t,n)?t[n]:void 0}function r(t){return String(t).slice(0,80)}function i(t){return String(t?.message)}function o(t,e){if(null==t)return!1;const n=Array.isArray(t)?t:[t];for(let t=0;t{if(!n)return r("sanitizer-unavailable",{sink:"createHTML"}),null;if(o)return c;try{return o=!0,t.sanitize(c,e)}catch(t){return r("sanitize-threw",{error:i(t)}),null}finally{o=!1}}}function y(t,e,n){return o=>{if(e){let r;try{r=e(o)}catch(e){return n("script-hook-threw",{sink:t,error:i(e)}),null}if("string"==typeof r)return n("script-sink-allowed",{sink:t}),r}return n("script-sink-refused",{sink:t,sample:r(o)}),null}}const p=Object.freeze({init:function(r={}){if(s)return f;s=!0;const p=n(r,"ON_VIOLATION"),h="function"==typeof p?p:()=>{},v={version:"0.2.0",ttSupported:!!l,enforcementActive:!1,defaultPolicyOwned:!1,sanitizerReady:!1,excluded:!1,metaInjected:!1,protected:!1,reason:""},m=(t,e)=>(v.protected=v.defaultPolicyOwned&&v.enforcementActive&&v.sanitizerReady,v.reason=t,e&&h(e,v),f=Object.freeze({...v}),f),O=a&&void 0!==a.href?String(a.href):"";if(o(n(r,"EXCLUDE"),O))return v.excluded=!0,m("URL matched EXCLUDE; DOMFortify is intentionally inactive on this page.","excluded-by-url");if(!l||"function"!=typeof l.createPolicy)return m("Trusted Types not supported; library is inert. Sinks are NOT routed.","tt-unsupported");const T=function(t,e){const r=n(t,"URL_CONFIG");if(!Array.isArray(r))return null;for(let t=0;tT&&e(T,t)?T[t]:n(r,t);if(!0===n(r,"INJECT_META")){const t=(g=n(r,"META_DIRECTIVE"),A="function"==typeof w("SANITIZER"),"string"==typeof g&&g?g:`require-trusted-types-for 'script'; trusted-types ${A?"default":"default dompurify"};`);v.metaInjected=function(t){if(!u)return!1;const e=u,n='\r\n]/g,"")+'">';if("loading"===e.readyState&&"function"==typeof e.write)try{return e.write(n),!0}catch{}try{const n=e.createElement("meta");n.setAttribute("http-equiv","Content-Security-Policy"),n.setAttribute("content",t),(e.head||e.documentElement).appendChild(n)}catch{}return!1}(t),h("meta-injection-attempted",{directive:t,written:v.metaInjected})}var g,A;v.enforcementActive=function(){try{return u.createElement("div").innerHTML="x",!1}catch{return!0}}();let b=w("SANITIZER");void 0===b&&(b=c.DOMPurify);const I=(L=b)&&"function"==typeof L.sanitize?L:"function"==typeof L?{sanitize:L}:null;var L;const E=w("SANITIZER_CONFIG"),R=E&&"object"==typeof E?function(e){const n={};for(const r in e)t.call(e,r)&&"__proto__"!==r&&"constructor"!==r&&"prototype"!==r&&(n[r]=e[r]);return n}(E):void 0,S=w("ALLOW_SCRIPT"),k=w("ALLOW_SCRIPT_URL"),P="function"==typeof S?S:null,z="function"==typeof k?k:null;let M=!1;if(I){const t=function(t,e){try{return"string"==typeof t.sanitize("x",e)?{ready:!0,error:null}:{ready:!1,error:"sanitize() did not return a string"}}catch(t){return{ready:!1,error:i(t)}}}(I,R);M=t.ready,t.ready||h("sanitizer-smoketest-failed",{error:t.error})}v.sanitizerReady=M;const D={createHTML:d(I,R,M,h),createScript:y("createScript",P,h),createScriptURL:y("createScriptURL",z,h)};if(l.defaultPolicy)return m("A default Trusted Types policy already exists; DOMFortify did NOT install and cannot vouch for it. Load DOMFortify first, inline in .","preexisting-default-policy");let C;try{C=l.createPolicy("default",D)}catch(t){return m(`createPolicy("default") threw (${i(t)}); another default policy won the race.`,"default-policy-lost")}return l.defaultPolicy&&l.defaultPolicy!==C?m('Our policy was created but is not the active default (allow-duplicates race lost). Remove "allow-duplicates" from the trusted-types directive.',"default-policy-not-active"):(v.defaultPolicyOwned=!0,v.enforcementActive?M?m(`Active: HTML sinks sanitized, script sinks ${P||z?"partly allowed by hooks":"refused"}.`):m("Enforcement active and slot locked, but the sanitizer is unavailable - HTML sinks will THROW (failing closed). Bundle DOMPurify and load it before DOMFortify.","failing-closed"):m("Default policy installed and slot locked, but TT enforcement is NOT active - sinks are not routed. Deliver require-trusted-types-for (header preferred).","enforcement-inactive"))},status:function(){return f}});"undefined"!=typeof window&&(window.DOMFortify=p,p.init(window.DOMFortifyConfig||{}))}(); +!function(){"use strict";const t=Object.prototype.hasOwnProperty;function e(e,r){return null!=e&&t.call(e,r)}function r(t,r){return e(t,r)?t[r]:void 0}function n(t){return String(t).slice(0,80)}function i(t){return String(t?.message)}function o(t,e){if(null==t)return!1;const r=Array.isArray(t)?t:[t];for(let t=0;t{if(!r)return n("sanitizer-unavailable",{sink:"createHTML"}),null;if(o)return c;try{return o=!0,t.sanitize(c,e)}catch(t){return n("sanitize-threw",{error:i(t)}),null}finally{o=!1}}}function y(t,e,r){return o=>{if(e){let n;try{n=e(o)}catch(e){return r("script-hook-threw",{sink:t,error:i(e)}),null}if("string"==typeof n)return r("script-sink-allowed",{sink:t}),n}return r("script-sink-refused",{sink:t,sample:n(o)}),null}}const p=Object.freeze({init:function(n={}){if(s)return f;s=!0;const p=r(n,"ON_VIOLATION"),h="function"==typeof p?(t,e)=>{try{p(t,e)}catch{}}:()=>{},v={version:"0.2.0",ttSupported:!!l,enforcementActive:!1,defaultPolicyOwned:!1,sanitizerReady:!1,excluded:!1,metaInjected:!1,protected:!1,reason:""},m=(t,e)=>(v.protected=v.defaultPolicyOwned&&v.enforcementActive&&v.sanitizerReady,v.reason=t,f=Object.freeze({...v}),e&&h(e,f),f),O=u&&void 0!==u.href?String(u.href):"";if(o(r(n,"EXCLUDE"),O))return v.excluded=!0,m("URL matched EXCLUDE; DOMFortify is intentionally inactive on this page.","excluded-by-url");if(!l||"function"!=typeof l.createPolicy)return m("Trusted Types not supported; library is inert. Sinks are NOT routed.","tt-unsupported");const T=function(t,e){const n=r(t,"URL_CONFIG");if(!Array.isArray(n))return null;for(let t=0;tT&&e(T,t)?T[t]:r(n,t);if(!0===r(n,"INJECT_META")){const t=(g=r(n,"META_DIRECTIVE"),A="function"==typeof w("SANITIZER"),"string"==typeof g&&g?g:`require-trusted-types-for 'script'; trusted-types ${A?"default":"default dompurify"};`);v.metaInjected=function(t){if(!a)return!1;const e=a,r='\r\n]/g,"")+'">';if("loading"===e.readyState&&"function"==typeof e.write)try{return e.write(r),!0}catch{}try{const r=e.createElement("meta");r.setAttribute("http-equiv","Content-Security-Policy"),r.setAttribute("content",t),(e.head||e.documentElement).appendChild(r)}catch{}return!1}(t),h("meta-injection-attempted",{directive:t,written:v.metaInjected})}var g,A;v.enforcementActive=function(){try{return a.createElement("div").innerHTML="x",!1}catch{return!0}}();let b=w("SANITIZER");void 0===b&&(b=c.DOMPurify);const I=(L=b)&&"function"==typeof L.sanitize?L:"function"==typeof L?{sanitize:L}:null;var L;const E=w("SANITIZER_CONFIG"),R=E&&"object"==typeof E?function(e){const r={};for(const n in e)t.call(e,n)&&"__proto__"!==n&&"constructor"!==n&&"prototype"!==n&&(r[n]=e[n]);return r}(E):void 0,S=w("ALLOW_SCRIPT"),k=w("ALLOW_SCRIPT_URL"),P="function"==typeof S?S:null,z="function"==typeof k?k:null;let M=!1;if(I){const t=function(t,e){try{return"string"==typeof t.sanitize("x",e)?{ready:!0,error:null}:{ready:!1,error:"sanitize() did not return a string"}}catch(t){return{ready:!1,error:i(t)}}}(I,R);M=t.ready,t.ready||h("sanitizer-smoketest-failed",{error:t.error})}v.sanitizerReady=M;const D={createHTML:d(I,R,M,h),createScript:y("createScript",P,h),createScriptURL:y("createScriptURL",z,h)};if(l.defaultPolicy)return m("A default Trusted Types policy already exists; DOMFortify did NOT install and cannot vouch for it. Load DOMFortify first, inline in .","preexisting-default-policy");let C;try{C=l.createPolicy("default",D)}catch(t){return m(`createPolicy("default") threw (${i(t)}); another default policy won the race.`,"default-policy-lost")}return l.defaultPolicy&&l.defaultPolicy!==C?m('Our policy was created but is not the active default (allow-duplicates race lost). Remove "allow-duplicates" from the trusted-types directive.',"default-policy-not-active"):(v.defaultPolicyOwned=!0,v.enforcementActive?M?m(`Active: HTML sinks sanitized, script sinks ${P||z?"partly allowed by hooks":"refused"}.`):m("Enforcement active and slot locked, but the sanitizer is unavailable - HTML sinks will THROW (failing closed). Bundle DOMPurify and load it before DOMFortify.","failing-closed"):m("Default policy installed and slot locked, but TT enforcement is NOT active - sinks are not routed. Deliver require-trusted-types-for (header preferred).","enforcement-inactive"))},status:function(){return f}});"undefined"!=typeof window&&(window.DOMFortify=p,p.init(window.DOMFortifyConfig||{}))}(); //# sourceMappingURL=fortify.min.js.map diff --git a/dist/fortify.min.js.map b/dist/fortify.min.js.map index 808b37e..fd13b41 100644 --- a/dist/fortify.min.js.map +++ b/dist/fortify.min.js.map @@ -1 +1 @@ -{"version":3,"file":"fortify.min.js","sources":["../src/internal.ts","../src/fortify.ts","../src/auto.ts"],"sourcesContent":[null,null,null],"names":["hasOwn","Object","prototype","hasOwnProperty","own","obj","key","call","cfg","undefined","clip","s","String","slice","emsg","e","message","urlMatches","pattern","url","list","Array","isArray","i","length","p","indexOf","RegExp","test","root","globalThis","window","doc","document","loc","location","TT","trustedTypes","installed","cachedStatus","makeSanitizeHTML","sanitizer","config","ready","report","reentry","sink","sanitize","error","makeScriptHook","kind","fn","r","sample","DOMFortify","freeze","init","options","onv","status","version","ttSupported","enforcementActive","defaultPolicyOwned","sanitizerReady","excluded","metaInjected","protected","reason","done","code","href","createPolicy","override","rules","match","selectOverride","eff","directive","md","functionSanitizer","content","d","tag","replace","readyState","write","m","createElement","setAttribute","head","documentElement","appendChild","injectMeta","written","innerHTML","rawSan","DOMPurify","raw","rawCfg","sanitizeConfig","out","k","shallowCopy","asCand","asuCand","allowScript","allowScriptURL","result","smokeTest","policyDef","createHTML","createScript","createScriptURL","defaultPolicy","ours","DOMFortifyConfig"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fortify.min.js","sources":["../src/internal.ts","../src/fortify.ts","../src/auto.ts"],"sourcesContent":[null,null,null],"names":["hasOwn","Object","prototype","hasOwnProperty","own","obj","key","call","cfg","undefined","clip","s","String","slice","emsg","e","message","urlMatches","pattern","url","list","Array","isArray","i","length","p","indexOf","RegExp","test","root","globalThis","window","doc","document","loc","location","TT","trustedTypes","installed","cachedStatus","makeSanitizeHTML","sanitizer","config","ready","report","reentry","sink","sanitize","error","makeScriptHook","kind","fn","r","sample","DOMFortify","freeze","init","options","onv","code","detail","status","version","ttSupported","enforcementActive","defaultPolicyOwned","sanitizerReady","excluded","metaInjected","protected","reason","done","href","createPolicy","override","rules","match","selectOverride","eff","directive","md","functionSanitizer","content","d","tag","replace","readyState","write","m","createElement","setAttribute","head","documentElement","appendChild","injectMeta","written","innerHTML","rawSan","DOMPurify","raw","rawCfg","sanitizeConfig","out","k","shallowCopy","asCand","asuCand","allowScript","allowScriptURL","result","smokeTest","policyDef","createHTML","createScript","createScriptURL","defaultPolicy","ours","DOMFortifyConfig"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 71b41ac..33c3203 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,19 @@ { "name": "domfortify", - "version": "0.1.0", + "version": "0.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "domfortify", - "version": "0.1.0", + "version": "0.2.0", "license": "(MPL-2.0 OR Apache-2.0)", "devDependencies": { "@playwright/test": "^1.49.0", "@rollup/plugin-replace": "^6.0.1", "@rollup/plugin-terser": "^1.0.0", "@rollup/plugin-typescript": "^12.1.1", - "dompurify": "^3.2.0", + "dompurify": "^3.4.11", "fast-check": "^4.8.0", "prettier": "^3.4.2", "qunit": "^2.23.1", @@ -652,9 +652,9 @@ "license": "MIT" }, "node_modules/dompurify": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.10.tgz", - "integrity": "sha512-0xzNv0e7oYC6yyuOGZIABPM4qtg3QxLFniDNPP4ZP90wR8Yq3zgwpRbrNiT4N3IKqDbbYFEJLV+JWEs19aZ//w==", + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.11.tgz", + "integrity": "sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw==", "dev": true, "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { diff --git a/package.json b/package.json index ca57a57..2128d38 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "@rollup/plugin-replace": "^6.0.1", "@rollup/plugin-terser": "^1.0.0", "@rollup/plugin-typescript": "^12.1.1", - "dompurify": "^3.2.0", + "dompurify": "^3.4.11", "fast-check": "^4.8.0", "prettier": "^3.4.2", "qunit": "^2.23.1", diff --git a/src/fortify.ts b/src/fortify.ts index d08da76..a1e851f 100644 --- a/src/fortify.ts +++ b/src/fortify.ts @@ -194,8 +194,20 @@ export function init(options: DOMFortifyConfig = {}): Readonly if (installed) return cachedStatus as Readonly; installed = true; + // The violation reporter is observability, never control flow. Wrap it so a throwing ON_VIOLATION + // can neither abort init() (which would leave us installed with a null status) nor turn a + // fail-closed sink - one that should quietly return null - into a thrown exception. const onv = cfg(options, 'ON_VIOLATION'); - const report: Report = typeof onv === 'function' ? (onv as Report) : () => {}; + const report: Report = + typeof onv === 'function' + ? (code, detail) => { + try { + (onv as Report)(code, detail); + } catch { + /* a misbehaving reporter must never break the policy */ + } + } + : () => {}; const status: DOMFortifyStatus = { version: VERSION, @@ -211,8 +223,10 @@ export function init(options: DOMFortifyConfig = {}): Readonly const done = (reason: string, code?: ViolationCode): Readonly => { status.protected = status.defaultPolicyOwned && status.enforcementActive && status.sanitizerReady; status.reason = reason; - if (code) report(code, status); + // Freeze the snapshot first, then report it: the reporter sees exactly the authoritative status + // that gets cached and returned, and has no window to mutate the cached copy. cachedStatus = Object.freeze({ ...status }); + if (code) report(code, cachedStatus); return cachedStatus; };