@wcag-checkr/ci 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ErrorBoundary-BEvsunVd.js → ErrorBoundary-BR92Lj44.js} +7 -7
- package/dist/assets/{content-script.ts-DYFeeoQ7.js → content-script.ts-CsBWyYDh.js} +1 -1
- package/dist/assets/{content-script.ts-loader-BfRK3cgW.js → content-script.ts-loader-H5dU9ywW.js} +1 -1
- package/dist/assets/{copy-ai-fixer-prompt-BGVCe4rw.js → copy-ai-fixer-prompt-C1_vIDjJ.js} +2 -2
- package/dist/assets/{devtools-panel-u5jtM9F8.js → devtools-panel-BLRs10mv.js} +1 -1
- package/dist/assets/{diff-RnwNJg4F.js → diff-Dc5xUcCG.js} +1 -1
- package/dist/assets/{parallel-tab-flow-BkUw-Upm.js → parallel-tab-flow-CUZjStzy.js} +1 -1
- package/dist/assets/{rubric-config-client-BsVz-WQ6.js → rubric-config-client-CwStR9EG.js} +1 -1
- package/dist/assets/{scheduled-audit-runner-DsCClQxp.js → scheduled-audit-runner-J6cea_BZ.js} +224 -216
- package/dist/assets/{service-worker.ts-zB1w9Pur.js → service-worker.ts-D7lljTTB.js} +2 -2
- package/dist/assets/side-panel-CINviz_y.js +4 -0
- package/dist/assets/{site-report-renderer-CqDo4iRO.js → site-report-renderer-xmbCubzM.js} +71 -63
- package/dist/devtools/panel.html +4 -4
- package/dist/manifest.json +4 -4
- package/dist/service-worker-loader.js +1 -1
- package/dist/side-panel/side-panel.html +6 -6
- package/package.json +1 -1
- package/dist/assets/side-panel-BSnFvHzW.js +0 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as Rh}from"./preload-helper-D7HrI6pR.js";import{o as De,c as Dt,f as Fk,k as ns,i as Sk}from"./crash-reporter-KD5f4utB.js";import{m as kk,a as Ok,c as Nl}from"./diff-RnwNJg4F.js";import{c as Ik,g as Nk}from"./_commonjsHelpers-Cpj98o6Y.js";import{l as Mk}from"./custom-rules-CAe0nbES.js";import{a as Pk}from"./design-system-audit-DpxJrxnb.js";const Lk=["data-testid","data-test","data-cy"],Bk=3,$k=4;function hv(d){if(d.storyId)return{id:`::story:${d.storyId}`,strategy:"story",fragile:!1,inputs:{storyId:d.storyId}};const m=qk(d.url),p=Fh(d.element,["data-componentid"],1/0);if(p)return{id:`${m}::explicit:${p.value}`,strategy:"explicit",fragile:!1,inputs:{url:m}};const w=Fh(d.element,Lk,Bk);if(w)return{id:`${m}::testid:${w.value}`,strategy:"testid",fragile:!1,inputs:{url:m,testid:w.value}};const g=d.element.tagName.toLowerCase();if(g.includes("-"))return{id:`${m}::customelement:${g}`,strategy:"customelement",fragile:!1,inputs:{url:m,tagName:g}};const b=vv(d.element),R=zk(d.element);if(b&&R)return{id:`${m}::aria:${b}:${R}`,strategy:"aria",fragile:!1,inputs:{url:m,role:b,accessibleName:R}};const S=Vk(d.element);return{id:`${m}::dom:${S}`,strategy:"dom",fragile:!0,inputs:{url:m,domPath:S}}}function qk(d){try{const m=new URL(d);m.search="",m.hash="";const p=m.protocol;let w;p==="https:"&&m.port==="443"||p==="http:"&&m.port==="80"?w=m.hostname.toLowerCase():w=m.host.toLowerCase();let g=m.pathname;return g.endsWith("/")&&(g=g.slice(0,-1)),`${p}//${w}${g}`}catch{return d}}function Fh(d,m,p){let w=d,g=0;for(;w&&g<=p;){for(const b of m){const R=w.getAttribute(b);if(R!==null&&R!=="")return{name:b,value:R}}w=w.parentElement,g++}return null}const Hk={A:"link",ARTICLE:"article",ASIDE:"complementary",BUTTON:"button",DIALOG:"dialog",FOOTER:"contentinfo",FORM:"form",H1:"heading",H2:"heading",H3:"heading",H4:"heading",H5:"heading",H6:"heading",HEADER:"banner",IMG:"img",INPUT:"textbox",LI:"listitem",MAIN:"main",NAV:"navigation",OL:"list",SECTION:"region",SELECT:"combobox",TEXTAREA:"textbox",UL:"list"};function vv(d){const m=d.getAttribute("role");return m||(d.tagName==="A"&&!d.hasAttribute("href")?null:Hk[d.tagName]??null)}const jk=new Set(["button","link","heading","tab","option","menuitem","cell","columnheader","rowheader"]);function zk(d){var g,b,R;const m=d.getAttribute("aria-label");if(m)return m.trim();const p=d.getAttribute("aria-labelledby");if(p){const S=p.split(/\s+/).filter(Boolean),$=[];for(const q of S){const B=(g=d.ownerDocument)==null?void 0:g.getElementById(q),K=(b=B==null?void 0:B.textContent)==null?void 0:b.trim();K&&$.push(K)}if($.length>0)return $.join(" ")}const w=vv(d);if(w&&jk.has(w)){const S=(R=d.textContent)==null?void 0:R.trim();if(S)return S}return null}function Vk(d){const m=[];let p=d,w=0;for(;p&&w<$k;){if(p!==d&&p.id){m.unshift(`#${p.id}`);break}let g=p.tagName.toLowerCase();const b=p.parentElement;if(b){const R=Array.from(b.children).filter(S=>S.tagName===p.tagName);if(R.length>1){const S=R.indexOf(p)+1;g=`${g}:nth-of-type(${S})`}}m.unshift(g),p=p.parentElement,w++}return m.join(">")}const Gk=new Set(["UL","OL","DL","MENU","SELECT"]),Uk=new Set(["list","menu","menubar","tablist","tree","group","radiogroup"]);function Wk(d){if(Gk.has(d.tagName))return!0;const m=d.getAttribute("role");return m!==null&&Uk.has(m)?!0:d.tagName==="NAV"||m==="navigation"?d.querySelector("ul, ol, dl, menu")===null:!1}const Sh=new WeakMap;function Yk(d){const m=Sh.get(d);if(m!==void 0)return m;let p=!1;try{const w=window.getComputedStyle(d),g=w.display,b=g==="grid"||g==="inline-grid",R=g==="flex"||g==="inline-flex",S=parseInt(w.columnCount||"1",10),$=!Number.isNaN(S)&&S>1;if(b||R||$){let q=0;for(const B of Array.from(d.children)){if(B.tagName==="STYLE"||B.tagName==="SCRIPT")continue;if(B.getClientRects().length>0&&q++,q>=2)break}p=q>=2}}catch{}return Sh.set(d,p),p}function gv(d,m){let p=d.parentElement;for(;p&&p!==m&&p!==document.body;){if(Wk(p))return p;const w=p.parentElement;if(w&&w!==m&&Yk(w))return p;p=p.parentElement}return null}const Xk=new Set(["H1","H2","H3","H4","H5","H6","P","LI","A","BUTTON","LABEL","BLOCKQUOTE","FIGCAPTION","SUMMARY","DT","DD","TD","TH","LEGEND","CAPTION"]),kh=24,Kk=2;function Zk(d){if(d.getClientRects().length===0)return!1;const m=getComputedStyle(d);return!(m.display==="none"||m.visibility==="hidden"||m.opacity==="0")}function Qk(d){for(const m of Array.from(d.childNodes))if(m.nodeType===Node.TEXT_NODE&&(m.textContent??"").trim().length>0)return!0;return!1}function Jk(d){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(d):d.replace(/[^a-zA-Z0-9_-]/g,m=>`\\${m}`)}function eO(d){if(d.id)return`#${Jk(d.id)}`;const m=d.getAttribute("data-testid");if(m)return`[data-testid="${m}"]`;const p=d.parentElement;if(!p)return d.tagName.toLowerCase();const w=d.tagName.toLowerCase(),b=Array.from(p.children).filter(R=>R.tagName===d.tagName).indexOf(d)+1;return`${w}:nth-of-type(${b})`}function bv(d){const m=d instanceof Document?d.body:d;if(!m)return[];const p=Array.from(Xk,ne=>ne.toLowerCase()).join(","),w=Array.from(m.querySelectorAll(p)).filter(ne=>Zk(ne)&&Qk(ne));if(w.length<2)return[];let g=0,b=0;typeof window<"u"&&(g=window.scrollY,b=window.scrollX,(g!==0||b!==0)&&window.scrollTo({top:0,left:0,behavior:"instant"}));const R=w.map((ne,J)=>{const le=ne.getBoundingClientRect();return{el:ne,domIndex:J,rect:{x:Math.round(le.left),y:Math.round(le.top),w:Math.round(le.width),h:Math.round(le.height)}}}),S=[],$=new Map;for(const ne of R){const J=gv(ne.el,m);if(J){let le=$.get(J);if(!le){const qe=J.getBoundingClientRect();le={items:[],anchorTop:qe.top,anchorLeft:qe.left},$.set(J,le),S.push(le)}le.items.push(ne)}else S.push({items:[ne],anchorTop:ne.rect.y,anchorLeft:ne.rect.x})}S.sort((ne,J)=>{const le=Math.floor(ne.anchorTop/kh),qe=Math.floor(J.anchorTop/kh);return le!==qe?le-qe:ne.anchorLeft-J.anchorLeft});const q=S.flatMap(ne=>ne.items.slice().sort((J,le)=>J.domIndex-le.domIndex)),B=new Map;q.forEach((ne,J)=>B.set(ne.el,J));const K=[];for(const ne of R){const J=B.get(ne.el);Math.abs(ne.domIndex-J)<Kk||K.push({selector:eO(ne.el),textSnippet:(ne.el.textContent??"").trim().slice(0,80),domIndex:ne.domIndex,visualIndex:J,boundingRect:ne.rect})}K.sort((ne,J)=>Math.abs(J.domIndex-J.visualIndex)-Math.abs(ne.domIndex-ne.visualIndex));const ve=K.slice(0,20);return typeof window<"u"&&(g!==0||b!==0)&&window.scrollTo({top:g,left:b,behavior:"instant"}),ve}const tO=["a[href]","button","input","select","textarea","[tabindex]","audio[controls]","video[controls]","[contenteditable]"].join(", "),Oh=24,Ih=2;function yv(d){const m=d.getAttribute("tabindex");if(m===null)return 0;const p=parseInt(m,10);return Number.isNaN(p)?0:p}function rO(d){if(d.getClientRects().length===0)return!1;const m=window.getComputedStyle(d);return!(m.visibility==="hidden"||m.display==="none")}function aO(d){return!(d.hasAttribute("disabled")||d.getAttribute("contenteditable")==="false"||d instanceof HTMLInputElement&&d.type==="hidden"||d.getAttribute("aria-hidden")==="true"||yv(d)<0)}function nO(d){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(d):d.replace(/[^a-zA-Z0-9_-]/g,m=>`\\${m}`)}function iO(d){if(d.id)return`#${nO(d.id)}`;const m=d.getAttribute("data-testid");if(m)return`[data-testid="${m}"]`;const p=d.parentElement;if(!p)return d.tagName.toLowerCase();const w=d.tagName.toLowerCase(),b=Array.from(p.children).filter(R=>R.tagName===d.tagName).indexOf(d)+1;return`${w}:nth-of-type(${b})`}function oO(d){return(d.innerText||d.textContent||d.getAttribute("aria-label")||d.getAttribute("alt")||d.getAttribute("placeholder")||"").replace(/\s+/g," ").trim().slice(0,80)}function sO(){let d=0,m=0;typeof window<"u"&&(d=window.scrollY,m=window.scrollX,(d!==0||m!==0)&&window.scrollTo({top:0,left:0,behavior:"instant"}));const p=Array.from(document.querySelectorAll(tO)).filter(rO).filter(aO),w=p.map((B,K)=>({el:B,ti:yv(B),domIdx:K})).sort((B,K)=>{const ve=B.ti>0,ne=K.ti>0;return ve&&!ne?-1:!ve&&ne?1:ve&&ne&&B.ti!==K.ti?B.ti-K.ti:B.domIdx-K.domIdx}),g=[],b=new Map,R=document.body??document.documentElement;for(const[B,K]of p.entries()){const ve=K.getBoundingClientRect(),ne={el:K,domIdx:B,rect:ve},J=gv(K,R);if(J){let le=b.get(J);if(!le){const qe=J.getBoundingClientRect();le={items:[],anchorTop:qe.top,anchorLeft:qe.left},b.set(J,le),g.push(le)}le.items.push(ne)}else g.push({items:[ne],anchorTop:ve.top,anchorLeft:ve.left})}g.sort((B,K)=>{const ve=Math.floor(B.anchorTop/Oh),ne=Math.floor(K.anchorTop/Oh);return ve!==ne?ve-ne:B.anchorLeft-K.anchorLeft});const S=g.flatMap(B=>B.items.slice().sort((K,ve)=>K.domIdx-ve.domIdx)),$=new Map;S.forEach((B,K)=>$.set(B.el,K));const q=[];return w.forEach((B,K)=>{const ve=B.domIdx,ne=$.get(B.el)??K,J=Math.abs(K-ne)>=Ih,le=Math.abs(K-ve)>=Ih;if(!J&&!le)return;const qe=J&&le?"both":J?"visual":"tabindex",je=B.el.getBoundingClientRect();q.push({selector:iO(B.el),textSnippet:oO(B.el),tabPosition:K+1,visualPosition:ne+1,domPosition:ve+1,flag:qe,boundingRect:{x:je.x,y:je.y,w:je.width,h:je.height}})}),typeof window<"u"&&(d!==0||m!==0)&&window.scrollTo({top:d,left:m,behavior:"instant"}),q}const uO=new Set(["P","LI","DD","DT","BLOCKQUOTE","FIGCAPTION","TD","TH","LEGEND","LABEL","A","SPAN","DIV","H1","H2","H3","H4","H5","H6","ARTICLE","SECTION","MAIN"]),lO=new Set(["SCRIPT","STYLE","NOSCRIPT","CODE","PRE","TEXTAREA"]),Nh=16,Mh=1.5,cO=25;function dO(d){const m=d.getBoundingClientRect();if(m.width===0&&m.height===0)return!1;const p=window.getComputedStyle(d);return!(p.visibility==="hidden"||p.display==="none"||parseFloat(p.opacity)===0)}function Ph(d){let m="";for(const p of Array.from(d.childNodes))p.nodeType===Node.TEXT_NODE&&(m+=p.textContent??"");return{textContent:m.trim(),nonEmpty:m.trim().length>=cO}}function fO(d){if(d.id)return`#${d.id}`;const m=d.tagName.toLowerCase();if(d instanceof HTMLElement&&d.dataset.testid)return`[data-testid="${d.dataset.testid}"]`;let p=d.parentElement;for(let w=0;p&&w<4;w++){if(p.id)return`#${p.id} ${m}`;p=p.parentElement}return m}function pO(d=document){const m=[],p=d instanceof Document?d.documentElement:d;if(!p)return m;const w=document.createTreeWalker(p,NodeFilter.SHOW_ELEMENT,{acceptNode(S){return!(S instanceof Element)||lO.has(S.tagName)?NodeFilter.FILTER_REJECT:uO.has(S.tagName)?dO(S)?Ph(S).nonEmpty?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP:NodeFilter.FILTER_REJECT:NodeFilter.FILTER_SKIP}});let g=w.nextNode(),b=0;const R=1500;for(;g&&b<R;){b++;const S=window.getComputedStyle(g),$=parseFloat(S.fontSize);if(!Number.isFinite($)||$<=0){g=w.nextNode();continue}const q=S.lineHeight;let B=NaN;q==="normal"?B=$*1.2:B=parseFloat(q);const K=S.letterSpacing,ve=K==="normal"?0:parseFloat(K)||0,ne=S.wordSpacing,J=ne==="normal"?0:parseFloat(ne)||0,le=g.tagName==="P"||g.tagName==="LI",qe=!g.tagName.match(/^H[1-6]$/),je=g.getBoundingClientRect(),Vt={x:Math.round(je.x),y:Math.round(je.y),w:Math.round(je.width),h:Math.round(je.height)},Gt=fO(g),vr=Ph(g).textContent.slice(0,60);if(qe&&$<Nh&&m.push({kind:"small-body-font",selector:Gt,textSnippet:vr,details:`font-size: ${$.toFixed(1)}px (recommend ≥ ${Nh}px for body text)`,wcagCriterion:"1.4.4",fontSize:$,boundingRect:Vt}),le&&Number.isFinite(B)&&B>0){const Cr=B/$;Cr<Mh&&m.push({kind:"tight-line-height",selector:Gt,textSnippet:vr,details:`line-height ratio: ${Cr.toFixed(2)} (need ≥ ${Mh} per WCAG 1.4.12)`,wcagCriterion:"1.4.12",fontSize:$,ratio:Cr,boundingRect:Vt})}ve<-.05*$&&m.push({kind:"tight-letter-spacing",selector:Gt,textSnippet:vr,details:`letter-spacing: ${ve.toFixed(2)}px (extremely tight — readability concern)`,wcagCriterion:"1.4.12",fontSize:$,boundingRect:Vt}),J<-.1*$&&m.push({kind:"tight-word-spacing",selector:Gt,textSnippet:vr,details:`word-spacing: ${J.toFixed(2)}px (extremely tight)`,wcagCriterion:"1.4.12",fontSize:$,boundingRect:Vt}),g=w.nextNode()}return m.slice(0,100)}const mO=/var\(\s*(--[A-Za-z0-9_-]+)(\s*,)?/g,hO=/(--[A-Za-z0-9_-]+)\s*:/g;function vO(){if(typeof document>"u")return[];const d=new Set,m=new Map;for(const w of Array.from(document.styleSheets)){let g=null;try{g=w.cssRules}catch{continue}g&&wv(g,d,m)}try{const w=document.querySelectorAll('[style*="--"]');for(const g of Array.from(w)){const b=g.getAttribute("style")??"";for(const R of b.matchAll(hO)){const S=R[1];S&&d.add(S)}}}catch{}const p=[];for(const[w,g]of m.entries())d.has(w)||p.push({name:w,referenceCount:g.length,sampleSites:bO(g).slice(0,5)});return p.sort((w,g)=>g.referenceCount-w.referenceCount),p}const gO=/([a-zA-Z-][a-zA-Z0-9-]*)\s*:\s*([^;]+?)\s*(?:;|$)/g;function wv(d,m,p){for(const w of Array.from(d)){if(w instanceof CSSStyleRule){const g=w.selectorText,b=w.style.cssText??"";for(const R of b.matchAll(gO)){const S=R[1],$=R[2];if(!(!S||!$)){if(S.startsWith("--")){m.add(S);continue}if($.includes("var("))for(const q of $.matchAll(mO)){const B=q[1],K=q[2]!=null;if(!B||K)continue;const ve=p.get(B)??[];ve.push({selector:g,property:S}),p.set(B,ve)}}}continue}"cssRules"in w&&w.cssRules&&wv(w.cssRules,m,p)}}function bO(d){const m=new Set,p=[];for(const w of d){const g=`${w.selector}::${w.property}`;m.has(g)||(m.add(g),p.push(w))}return p}const yO=/prefers-color-scheme\s*:\s*light/,wO=/prefers-color-scheme\s*:\s*dark/;function DO(){if(typeof document>"u")return{hasLightModeCss:!1,hasDarkModeCss:!1,hasUnreadableSheets:!1};let d=!1,m=!1,p=!1;for(const w of Array.from(document.styleSheets)){let g=null;try{g=w.cssRules}catch{p=!0;continue}if(g&&(ql(g,b=>{yO.test(b)&&(d=!0),wO.test(b)&&(m=!0)}),d&&m))break}return{hasLightModeCss:d,hasDarkModeCss:m,hasUnreadableSheets:p}}function ql(d,m){for(const p of Array.from(d)){if(p instanceof CSSMediaRule){m(p.media.mediaText),ql(p.cssRules,m);continue}"cssRules"in p&&p.cssRules&&ql(p.cssRules,m)}}var Kl={exports:{}};/*! axe v4.11.4
|
|
1
|
+
import{_ as Rh}from"./preload-helper-D7HrI6pR.js";import{o as De,c as Dt,f as Fk,k as ns,i as Sk}from"./crash-reporter-KD5f4utB.js";import{m as kk,b as Ok,c as Nl}from"./diff-Dc5xUcCG.js";import{c as Ik,g as Nk}from"./_commonjsHelpers-Cpj98o6Y.js";import{l as Mk}from"./custom-rules-CAe0nbES.js";import{a as Pk}from"./design-system-audit-DpxJrxnb.js";const Lk=["data-testid","data-test","data-cy"],Bk=3,$k=4;function hv(d){if(d.storyId)return{id:`::story:${d.storyId}`,strategy:"story",fragile:!1,inputs:{storyId:d.storyId}};const m=qk(d.url),p=Fh(d.element,["data-componentid"],1/0);if(p)return{id:`${m}::explicit:${p.value}`,strategy:"explicit",fragile:!1,inputs:{url:m}};const w=Fh(d.element,Lk,Bk);if(w)return{id:`${m}::testid:${w.value}`,strategy:"testid",fragile:!1,inputs:{url:m,testid:w.value}};const g=d.element.tagName.toLowerCase();if(g.includes("-"))return{id:`${m}::customelement:${g}`,strategy:"customelement",fragile:!1,inputs:{url:m,tagName:g}};const b=vv(d.element),R=zk(d.element);if(b&&R)return{id:`${m}::aria:${b}:${R}`,strategy:"aria",fragile:!1,inputs:{url:m,role:b,accessibleName:R}};const S=Vk(d.element);return{id:`${m}::dom:${S}`,strategy:"dom",fragile:!0,inputs:{url:m,domPath:S}}}function qk(d){try{const m=new URL(d);m.search="",m.hash="";const p=m.protocol;let w;p==="https:"&&m.port==="443"||p==="http:"&&m.port==="80"?w=m.hostname.toLowerCase():w=m.host.toLowerCase();let g=m.pathname;return g.endsWith("/")&&(g=g.slice(0,-1)),`${p}//${w}${g}`}catch{return d}}function Fh(d,m,p){let w=d,g=0;for(;w&&g<=p;){for(const b of m){const R=w.getAttribute(b);if(R!==null&&R!=="")return{name:b,value:R}}w=w.parentElement,g++}return null}const Hk={A:"link",ARTICLE:"article",ASIDE:"complementary",BUTTON:"button",DIALOG:"dialog",FOOTER:"contentinfo",FORM:"form",H1:"heading",H2:"heading",H3:"heading",H4:"heading",H5:"heading",H6:"heading",HEADER:"banner",IMG:"img",INPUT:"textbox",LI:"listitem",MAIN:"main",NAV:"navigation",OL:"list",SECTION:"region",SELECT:"combobox",TEXTAREA:"textbox",UL:"list"};function vv(d){const m=d.getAttribute("role");return m||(d.tagName==="A"&&!d.hasAttribute("href")?null:Hk[d.tagName]??null)}const jk=new Set(["button","link","heading","tab","option","menuitem","cell","columnheader","rowheader"]);function zk(d){var g,b,R;const m=d.getAttribute("aria-label");if(m)return m.trim();const p=d.getAttribute("aria-labelledby");if(p){const S=p.split(/\s+/).filter(Boolean),$=[];for(const q of S){const B=(g=d.ownerDocument)==null?void 0:g.getElementById(q),K=(b=B==null?void 0:B.textContent)==null?void 0:b.trim();K&&$.push(K)}if($.length>0)return $.join(" ")}const w=vv(d);if(w&&jk.has(w)){const S=(R=d.textContent)==null?void 0:R.trim();if(S)return S}return null}function Vk(d){const m=[];let p=d,w=0;for(;p&&w<$k;){if(p!==d&&p.id){m.unshift(`#${p.id}`);break}let g=p.tagName.toLowerCase();const b=p.parentElement;if(b){const R=Array.from(b.children).filter(S=>S.tagName===p.tagName);if(R.length>1){const S=R.indexOf(p)+1;g=`${g}:nth-of-type(${S})`}}m.unshift(g),p=p.parentElement,w++}return m.join(">")}const Gk=new Set(["UL","OL","DL","MENU","SELECT"]),Uk=new Set(["list","menu","menubar","tablist","tree","group","radiogroup"]);function Wk(d){if(Gk.has(d.tagName))return!0;const m=d.getAttribute("role");return m!==null&&Uk.has(m)?!0:d.tagName==="NAV"||m==="navigation"?d.querySelector("ul, ol, dl, menu")===null:!1}const Sh=new WeakMap;function Yk(d){const m=Sh.get(d);if(m!==void 0)return m;let p=!1;try{const w=window.getComputedStyle(d),g=w.display,b=g==="grid"||g==="inline-grid",R=g==="flex"||g==="inline-flex",S=parseInt(w.columnCount||"1",10),$=!Number.isNaN(S)&&S>1;if(b||R||$){let q=0;for(const B of Array.from(d.children)){if(B.tagName==="STYLE"||B.tagName==="SCRIPT")continue;if(B.getClientRects().length>0&&q++,q>=2)break}p=q>=2}}catch{}return Sh.set(d,p),p}function gv(d,m){let p=d.parentElement;for(;p&&p!==m&&p!==document.body;){if(Wk(p))return p;const w=p.parentElement;if(w&&w!==m&&Yk(w))return p;p=p.parentElement}return null}const Xk=new Set(["H1","H2","H3","H4","H5","H6","P","LI","A","BUTTON","LABEL","BLOCKQUOTE","FIGCAPTION","SUMMARY","DT","DD","TD","TH","LEGEND","CAPTION"]),kh=24,Kk=2;function Zk(d){if(d.getClientRects().length===0)return!1;const m=getComputedStyle(d);return!(m.display==="none"||m.visibility==="hidden"||m.opacity==="0")}function Qk(d){for(const m of Array.from(d.childNodes))if(m.nodeType===Node.TEXT_NODE&&(m.textContent??"").trim().length>0)return!0;return!1}function Jk(d){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(d):d.replace(/[^a-zA-Z0-9_-]/g,m=>`\\${m}`)}function eO(d){if(d.id)return`#${Jk(d.id)}`;const m=d.getAttribute("data-testid");if(m)return`[data-testid="${m}"]`;const p=d.parentElement;if(!p)return d.tagName.toLowerCase();const w=d.tagName.toLowerCase(),b=Array.from(p.children).filter(R=>R.tagName===d.tagName).indexOf(d)+1;return`${w}:nth-of-type(${b})`}function bv(d){const m=d instanceof Document?d.body:d;if(!m)return[];const p=Array.from(Xk,ne=>ne.toLowerCase()).join(","),w=Array.from(m.querySelectorAll(p)).filter(ne=>Zk(ne)&&Qk(ne));if(w.length<2)return[];let g=0,b=0;typeof window<"u"&&(g=window.scrollY,b=window.scrollX,(g!==0||b!==0)&&window.scrollTo({top:0,left:0,behavior:"instant"}));const R=w.map((ne,J)=>{const le=ne.getBoundingClientRect();return{el:ne,domIndex:J,rect:{x:Math.round(le.left),y:Math.round(le.top),w:Math.round(le.width),h:Math.round(le.height)}}}),S=[],$=new Map;for(const ne of R){const J=gv(ne.el,m);if(J){let le=$.get(J);if(!le){const qe=J.getBoundingClientRect();le={items:[],anchorTop:qe.top,anchorLeft:qe.left},$.set(J,le),S.push(le)}le.items.push(ne)}else S.push({items:[ne],anchorTop:ne.rect.y,anchorLeft:ne.rect.x})}S.sort((ne,J)=>{const le=Math.floor(ne.anchorTop/kh),qe=Math.floor(J.anchorTop/kh);return le!==qe?le-qe:ne.anchorLeft-J.anchorLeft});const q=S.flatMap(ne=>ne.items.slice().sort((J,le)=>J.domIndex-le.domIndex)),B=new Map;q.forEach((ne,J)=>B.set(ne.el,J));const K=[];for(const ne of R){const J=B.get(ne.el);Math.abs(ne.domIndex-J)<Kk||K.push({selector:eO(ne.el),textSnippet:(ne.el.textContent??"").trim().slice(0,80),domIndex:ne.domIndex,visualIndex:J,boundingRect:ne.rect})}K.sort((ne,J)=>Math.abs(J.domIndex-J.visualIndex)-Math.abs(ne.domIndex-ne.visualIndex));const ve=K.slice(0,20);return typeof window<"u"&&(g!==0||b!==0)&&window.scrollTo({top:g,left:b,behavior:"instant"}),ve}const tO=["a[href]","button","input","select","textarea","[tabindex]","audio[controls]","video[controls]","[contenteditable]"].join(", "),Oh=24,Ih=2;function yv(d){const m=d.getAttribute("tabindex");if(m===null)return 0;const p=parseInt(m,10);return Number.isNaN(p)?0:p}function rO(d){if(d.getClientRects().length===0)return!1;const m=window.getComputedStyle(d);return!(m.visibility==="hidden"||m.display==="none")}function aO(d){return!(d.hasAttribute("disabled")||d.getAttribute("contenteditable")==="false"||d instanceof HTMLInputElement&&d.type==="hidden"||d.getAttribute("aria-hidden")==="true"||yv(d)<0)}function nO(d){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(d):d.replace(/[^a-zA-Z0-9_-]/g,m=>`\\${m}`)}function iO(d){if(d.id)return`#${nO(d.id)}`;const m=d.getAttribute("data-testid");if(m)return`[data-testid="${m}"]`;const p=d.parentElement;if(!p)return d.tagName.toLowerCase();const w=d.tagName.toLowerCase(),b=Array.from(p.children).filter(R=>R.tagName===d.tagName).indexOf(d)+1;return`${w}:nth-of-type(${b})`}function oO(d){return(d.innerText||d.textContent||d.getAttribute("aria-label")||d.getAttribute("alt")||d.getAttribute("placeholder")||"").replace(/\s+/g," ").trim().slice(0,80)}function sO(){let d=0,m=0;typeof window<"u"&&(d=window.scrollY,m=window.scrollX,(d!==0||m!==0)&&window.scrollTo({top:0,left:0,behavior:"instant"}));const p=Array.from(document.querySelectorAll(tO)).filter(rO).filter(aO),w=p.map((B,K)=>({el:B,ti:yv(B),domIdx:K})).sort((B,K)=>{const ve=B.ti>0,ne=K.ti>0;return ve&&!ne?-1:!ve&&ne?1:ve&&ne&&B.ti!==K.ti?B.ti-K.ti:B.domIdx-K.domIdx}),g=[],b=new Map,R=document.body??document.documentElement;for(const[B,K]of p.entries()){const ve=K.getBoundingClientRect(),ne={el:K,domIdx:B,rect:ve},J=gv(K,R);if(J){let le=b.get(J);if(!le){const qe=J.getBoundingClientRect();le={items:[],anchorTop:qe.top,anchorLeft:qe.left},b.set(J,le),g.push(le)}le.items.push(ne)}else g.push({items:[ne],anchorTop:ve.top,anchorLeft:ve.left})}g.sort((B,K)=>{const ve=Math.floor(B.anchorTop/Oh),ne=Math.floor(K.anchorTop/Oh);return ve!==ne?ve-ne:B.anchorLeft-K.anchorLeft});const S=g.flatMap(B=>B.items.slice().sort((K,ve)=>K.domIdx-ve.domIdx)),$=new Map;S.forEach((B,K)=>$.set(B.el,K));const q=[];return w.forEach((B,K)=>{const ve=B.domIdx,ne=$.get(B.el)??K,J=Math.abs(K-ne)>=Ih,le=Math.abs(K-ve)>=Ih;if(!J&&!le)return;const qe=J&&le?"both":J?"visual":"tabindex",je=B.el.getBoundingClientRect();q.push({selector:iO(B.el),textSnippet:oO(B.el),tabPosition:K+1,visualPosition:ne+1,domPosition:ve+1,flag:qe,boundingRect:{x:je.x,y:je.y,w:je.width,h:je.height}})}),typeof window<"u"&&(d!==0||m!==0)&&window.scrollTo({top:d,left:m,behavior:"instant"}),q}const uO=new Set(["P","LI","DD","DT","BLOCKQUOTE","FIGCAPTION","TD","TH","LEGEND","LABEL","A","SPAN","DIV","H1","H2","H3","H4","H5","H6","ARTICLE","SECTION","MAIN"]),lO=new Set(["SCRIPT","STYLE","NOSCRIPT","CODE","PRE","TEXTAREA"]),Nh=16,Mh=1.5,cO=25;function dO(d){const m=d.getBoundingClientRect();if(m.width===0&&m.height===0)return!1;const p=window.getComputedStyle(d);return!(p.visibility==="hidden"||p.display==="none"||parseFloat(p.opacity)===0)}function Ph(d){let m="";for(const p of Array.from(d.childNodes))p.nodeType===Node.TEXT_NODE&&(m+=p.textContent??"");return{textContent:m.trim(),nonEmpty:m.trim().length>=cO}}function fO(d){if(d.id)return`#${d.id}`;const m=d.tagName.toLowerCase();if(d instanceof HTMLElement&&d.dataset.testid)return`[data-testid="${d.dataset.testid}"]`;let p=d.parentElement;for(let w=0;p&&w<4;w++){if(p.id)return`#${p.id} ${m}`;p=p.parentElement}return m}function pO(d=document){const m=[],p=d instanceof Document?d.documentElement:d;if(!p)return m;const w=document.createTreeWalker(p,NodeFilter.SHOW_ELEMENT,{acceptNode(S){return!(S instanceof Element)||lO.has(S.tagName)?NodeFilter.FILTER_REJECT:uO.has(S.tagName)?dO(S)?Ph(S).nonEmpty?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP:NodeFilter.FILTER_REJECT:NodeFilter.FILTER_SKIP}});let g=w.nextNode(),b=0;const R=1500;for(;g&&b<R;){b++;const S=window.getComputedStyle(g),$=parseFloat(S.fontSize);if(!Number.isFinite($)||$<=0){g=w.nextNode();continue}const q=S.lineHeight;let B=NaN;q==="normal"?B=$*1.2:B=parseFloat(q);const K=S.letterSpacing,ve=K==="normal"?0:parseFloat(K)||0,ne=S.wordSpacing,J=ne==="normal"?0:parseFloat(ne)||0,le=g.tagName==="P"||g.tagName==="LI",qe=!g.tagName.match(/^H[1-6]$/),je=g.getBoundingClientRect(),Vt={x:Math.round(je.x),y:Math.round(je.y),w:Math.round(je.width),h:Math.round(je.height)},Gt=fO(g),vr=Ph(g).textContent.slice(0,60);if(qe&&$<Nh&&m.push({kind:"small-body-font",selector:Gt,textSnippet:vr,details:`font-size: ${$.toFixed(1)}px (recommend ≥ ${Nh}px for body text)`,wcagCriterion:"1.4.4",fontSize:$,boundingRect:Vt}),le&&Number.isFinite(B)&&B>0){const Cr=B/$;Cr<Mh&&m.push({kind:"tight-line-height",selector:Gt,textSnippet:vr,details:`line-height ratio: ${Cr.toFixed(2)} (need ≥ ${Mh} per WCAG 1.4.12)`,wcagCriterion:"1.4.12",fontSize:$,ratio:Cr,boundingRect:Vt})}ve<-.05*$&&m.push({kind:"tight-letter-spacing",selector:Gt,textSnippet:vr,details:`letter-spacing: ${ve.toFixed(2)}px (extremely tight — readability concern)`,wcagCriterion:"1.4.12",fontSize:$,boundingRect:Vt}),J<-.1*$&&m.push({kind:"tight-word-spacing",selector:Gt,textSnippet:vr,details:`word-spacing: ${J.toFixed(2)}px (extremely tight)`,wcagCriterion:"1.4.12",fontSize:$,boundingRect:Vt}),g=w.nextNode()}return m.slice(0,100)}const mO=/var\(\s*(--[A-Za-z0-9_-]+)(\s*,)?/g,hO=/(--[A-Za-z0-9_-]+)\s*:/g;function vO(){if(typeof document>"u")return[];const d=new Set,m=new Map;for(const w of Array.from(document.styleSheets)){let g=null;try{g=w.cssRules}catch{continue}g&&wv(g,d,m)}try{const w=document.querySelectorAll('[style*="--"]');for(const g of Array.from(w)){const b=g.getAttribute("style")??"";for(const R of b.matchAll(hO)){const S=R[1];S&&d.add(S)}}}catch{}const p=[];for(const[w,g]of m.entries())d.has(w)||p.push({name:w,referenceCount:g.length,sampleSites:bO(g).slice(0,5)});return p.sort((w,g)=>g.referenceCount-w.referenceCount),p}const gO=/([a-zA-Z-][a-zA-Z0-9-]*)\s*:\s*([^;]+?)\s*(?:;|$)/g;function wv(d,m,p){for(const w of Array.from(d)){if(w instanceof CSSStyleRule){const g=w.selectorText,b=w.style.cssText??"";for(const R of b.matchAll(gO)){const S=R[1],$=R[2];if(!(!S||!$)){if(S.startsWith("--")){m.add(S);continue}if($.includes("var("))for(const q of $.matchAll(mO)){const B=q[1],K=q[2]!=null;if(!B||K)continue;const ve=p.get(B)??[];ve.push({selector:g,property:S}),p.set(B,ve)}}}continue}"cssRules"in w&&w.cssRules&&wv(w.cssRules,m,p)}}function bO(d){const m=new Set,p=[];for(const w of d){const g=`${w.selector}::${w.property}`;m.has(g)||(m.add(g),p.push(w))}return p}const yO=/prefers-color-scheme\s*:\s*light/,wO=/prefers-color-scheme\s*:\s*dark/;function DO(){if(typeof document>"u")return{hasLightModeCss:!1,hasDarkModeCss:!1,hasUnreadableSheets:!1};let d=!1,m=!1,p=!1;for(const w of Array.from(document.styleSheets)){let g=null;try{g=w.cssRules}catch{p=!0;continue}if(g&&(ql(g,b=>{yO.test(b)&&(d=!0),wO.test(b)&&(m=!0)}),d&&m))break}return{hasLightModeCss:d,hasDarkModeCss:m,hasUnreadableSheets:p}}function ql(d,m){for(const p of Array.from(d)){if(p instanceof CSSMediaRule){m(p.media.mediaText),ql(p.cssRules,m);continue}"cssRules"in p&&p.cssRules&&ql(p.cssRules,m)}}var Kl={exports:{}};/*! axe v4.11.4
|
|
2
2
|
* Copyright (c) 2015 - 2026 Deque Systems, Inc.
|
|
3
3
|
*
|
|
4
4
|
* Your use of this Source Code Form is subject to the terms of the Mozilla Public
|
package/dist/assets/{content-script.ts-loader-BfRK3cgW.js → content-script.ts-loader-H5dU9ywW.js}
RENAMED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
(async () => {
|
|
6
6
|
const { onExecute } = await import(
|
|
7
7
|
/* @vite-ignore */
|
|
8
|
-
chrome.runtime.getURL("assets/content-script.ts-
|
|
8
|
+
chrome.runtime.getURL("assets/content-script.ts-CsBWyYDh.js")
|
|
9
9
|
);
|
|
10
10
|
onExecute?.({ perf: { injectTime, loadTime: performance.now() - injectTime } });
|
|
11
11
|
})().catch(console.error);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ErrorBoundary-
|
|
2
|
-
import{_ as l}from"./preload-helper-D7HrI6pR.js";import{a as v}from"./crash-reporter-KD5f4utB.js";async function C(e){var f,w,y,g;if(e.results.length===0)return;let d;if(e.componentId){const o=await chrome.storage.local.get("igtRuns"),a=((o==null?void 0:o.igtRuns)??{})[e.componentId]??{};d=Object.values(a)}let p,u;const i=((f=e.results[0])==null?void 0:f.pageUrl)??((w=e.results[0])==null?void 0:w.scope)??"";if(i){const{getDismissalsForUrl:o}=await l(async()=>{const{getDismissalsForUrl:t}=await import("./ErrorBoundary-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ErrorBoundary-BR92Lj44.js","assets/styles-CLV9y-Ki.js","assets/_commonjsHelpers-Cpj98o6Y.js","assets/crash-reporter-KD5f4utB.js","assets/ai-usage-log-CYuyLsU4.js","assets/styles-BJICDw6s.css","assets/scheduled-audit-runner-J6cea_BZ.js","assets/preload-helper-D7HrI6pR.js","assets/diff-Dc5xUcCG.js","assets/design-system-audit-DpxJrxnb.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as l}from"./preload-helper-D7HrI6pR.js";import{a as v}from"./crash-reporter-KD5f4utB.js";async function C(e){var f,w,y,g;if(e.results.length===0)return;let d;if(e.componentId){const o=await chrome.storage.local.get("igtRuns"),a=((o==null?void 0:o.igtRuns)??{})[e.componentId]??{};d=Object.values(a)}let p,u;const i=((f=e.results[0])==null?void 0:f.pageUrl)??((w=e.results[0])==null?void 0:w.scope)??"";if(i){const{getDismissalsForUrl:o}=await l(async()=>{const{getDismissalsForUrl:t}=await import("./ErrorBoundary-BR92Lj44.js").then(n=>n.m);return{getDismissalsForUrl:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),r=await o(i);p=Object.keys(r);const{getResolutionsForPage:a}=await l(async()=>{const{getResolutionsForPage:t}=await import("./scheduled-audit-runner-J6cea_BZ.js").then(n=>n.b2);return{getResolutionsForPage:t}},__vite__mapDeps([6,7,3,8,4])),c=await a(i),x=new Set;for(const t of e.results)for(const n of((y=t.axeRulesEvaluated)==null?void 0:y.incomplete)??[])for(const _ of n.elements??[])x.add(`${n.ruleId}::${_.selector}`);u=c.filter(t=>x.has(`${t.ruleId}::${t.selector}`))}let m;if(e.componentId){const{loadAcknowledgedKeysForComponent:o}=await l(async()=>{const{loadAcknowledgedKeysForComponent:a}=await import("./scheduled-audit-runner-J6cea_BZ.js").then(c=>c.b1);return{loadAcknowledgedKeysForComponent:a}},__vite__mapDeps([6,7,3,8,4])),r=await o(e.componentId);m=r.size>0?Array.from(r):void 0}const b=await v({type:"EXPORT_REQUEST",format:"ai-prompt",results:e.results,delta:e.delta??void 0,manualRuns:d,siteCrawlReport:e.siteCrawlReport??void 0,dismissedKeys:p,incompleteResolutions:u,acknowledgedKeys:m});try{await navigator.clipboard.writeText(b.content)}catch{}const h=`<!doctype html><html><head><meta charset="utf-8"><title>AI fix prompt</title>
|
|
3
3
|
<style>body{font:14px/1.5 ui-monospace,Menlo,monospace;max-width:920px;margin:24px auto;padding:0 16px;color:#0f172a;}
|
|
4
4
|
.banner{background:#ecfdf5;border:1px solid #6ee7b7;padding:12px 14px;border-radius:6px;margin-bottom:16px;font-family:system-ui;}
|
|
5
5
|
pre{white-space:pre-wrap;word-break:break-word;background:#f8fafc;border:1px solid #e2e8f0;padding:14px;border-radius:6px;font-size:13px;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./modulepreload-polyfill-B5Qt9EMX.js";import{c as s,j as e,R as i}from"./styles-CLV9y-Ki.js";import{E as n,u as a,k as l}from"./ErrorBoundary-
|
|
1
|
+
import"./modulepreload-polyfill-B5Qt9EMX.js";import{c as s,j as e,R as i}from"./styles-CLV9y-Ki.js";import{E as n,u as a,k as l}from"./ErrorBoundary-BR92Lj44.js";import{i as p,f as m}from"./crash-reporter-KD5f4utB.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./ai-usage-log-CYuyLsU4.js";import"./scheduled-audit-runner-J6cea_BZ.js";import"./preload-helper-D7HrI6pR.js";import"./diff-Dc5xUcCG.js";import"./design-system-audit-DpxJrxnb.js";p("devtools-panel");function c(){const t=a(r=>r.tier);return m(t,"devtoolsPanel")?e.jsx(l,{}):e.jsxs("div",{style:{padding:24,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif'},children:[e.jsx("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:"#1f2923"},children:"DevTools panel isn’t available on your current plan"}),e.jsx("p",{style:{marginTop:8,fontSize:13,color:"#64748b"},children:"The wcagcheckr DevTools panel is part of a higher-tier plan. The extension’s side panel is still available — open it from the extensions menu."})]})}const o=document.getElementById("root");if(!o)throw new Error("devtools panel: #root not found");s(o).render(e.jsx(i.StrictMode,{children:e.jsx(n,{children:e.jsx(c,{})})}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var K=Object.defineProperty;var U=(e,t,a)=>t in e?K(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var D=(e,t,a)=>U(e,typeof t!="symbol"?t+"":t,a);import{c as M,o as T,k as A,t as I}from"./crash-reporter-KD5f4utB.js";const h="license:cache",$=60*60*1e3,x=24*60*60*1e3,v=7*24*60*60*1e3;async function g(){return(await chrome.storage.local.get(h))[h]??null}async function m(e){await chrome.storage.local.set({[h]:e})}async function E(){await chrome.storage.local.remove(h)}function j(e,t=Date.now()){const a=t-e.validatedAt;return a<$?"fresh":a<x?"stale":a<v?"grace":"expired"}const f=M("license-gate"),G="https://api.wcagcheckr.com",H="wcagcheckr",P=`${G}/v1/products/${H}/license/validate`,V=1e4,N="licenseToken";async function C(){return(await chrome.storage.local.get(N))[N]??null}async function F(e){await chrome.storage.local.set({[N]:e})}async function _(e){const t=await fetch(P,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({token:e}),signal:AbortSignal.timeout(V)});if(!t.ok)throw new Error(`validate http ${t.status}`);return{type:"LICENSE_VALIDATE_RESPONSE",...await t.json()}}async function y(e){const t=await g();if(t&&t.token===e){const s=j(t);if(s==="fresh")return t.response;if(s==="stale")return _(e).then(n=>m({token:e,validatedAt:Date.now(),response:n})).catch(n=>f.warn("background refresh failed",n)),t.response;if(s==="grace")try{const n=await _(e);return await m({token:e,validatedAt:Date.now(),response:n}),n}catch(n){return f.warn("grace-period revalidation failed; using last-known-good",n),t.response}}const a=await _(e);return await m({token:e,validatedAt:Date.now(),response:a}),a}function J(e){return e==="solo"||e==="solo-yearly"||e==="solo-single-month"?"solo":e==="team"||e==="team-15"||e==="team-yearly"||e==="team-15-yearly"?"team":"free"}async function w(){const e=await C();if(e)try{const t=await y(e);if(t.valid&&t.plan)return J(t.plan)}catch(t){f.warn("validation failed, falling back",t)}return"free"}async function B(){const e=await g(),t=e==null?void 0:e.response.features;if(!t||typeof t!="object")return{};const a=t.seatsUsed,s=t.seatsTotal;return{seatsUsed:typeof a=="number"?a:void 0,seatsTotal:typeof s=="number"?s:void 0}}function q(){const e=[];e.push(T("TIER_GET",async n=>{n.forceRefresh&&await E();const o=await w(),c={type:"TIER_GET_RESPONSE",tier:o};if(o==="team"){const{seatsUsed:l,seatsTotal:d}=await B();l!==void 0&&(c.seatsUsed=l),d!==void 0&&(c.seatsTotal=d)}const i=await g();if(i!=null&&i.response.valid&&i.response.plan){if(c.planCode=i.response.plan,i.response.plan==="solo-single-month"&&i.response.expiresAt){const l=new Date(i.response.expiresAt).getTime()-Date.now();c.licenseDaysRemaining=Math.max(0,Math.ceil(l/864e5))}i.response.pastDueSince&&(c.pastDue=!0)}return c})),e.push(T("LICENSE_VALIDATE_REQUEST",async n=>{try{if(n.forceRefresh){await E();const o=await y(n.token);return A({type:"LICENSE_CHANGED_EVENT",tier:await w()}),o}return await y(n.token)}catch(o){return f.error("validate failed",o),{type:"LICENSE_VALIDATE_RESPONSE",valid:!1,plan:null,email:null,status:null,expiresAt:null}}})),e.push(T("LICENSE_SET_REQUEST",async n=>{await F(n.token),await E();let o=!1,c={ok:!1,reason:"not-attempted"};try{const p=await y(n.token);if(await m({token:n.token,validatedAt:Date.now(),response:p}),o=p.valid===!0,o){const u=await I(n.token);u.ok?c={ok:!0,seatsUsed:u.seatsUsed,seatsTotal:u.seatsTotal,overCapacity:u.overCapacity}:c=u}}catch(p){f.warn("validation after set failed",p)}const i=await w();A({type:"LICENSE_CHANGED_EVENT",tier:i});const l=await g(),d=(l==null?void 0:l.response.features)??void 0;return{type:"LICENSE_SET_RESPONSE",validated:o,tier:i,features:d,seatClaim:c}})),(async()=>{try{const n=await C();n&&await I(n)}catch(n){f.debug("boot-time seat claim failed",n)}})();const t="license:periodic-refresh",a=60;chrome.alarms.get(t,n=>{n||chrome.alarms.create(t,{periodInMinutes:a})});const s=async n=>{if(n.name===t)try{const o=await C();if(!o)return;await E();const c=await y(o);await m({token:o,validatedAt:Date.now(),response:c}),A({type:"LICENSE_CHANGED_EVENT",tier:await w()}),f.debug("periodic license refresh complete")}catch(o){f.warn("periodic license refresh failed",o)}};return chrome.alarms.onAlarm.addListener(s),e.push(()=>chrome.alarms.onAlarm.removeListener(s)),f.info("handlers registered"),()=>e.forEach(n=>n())}function W(e,t,a=!1,s){return{code:e,message:t,recoverable:a,details:s}}class Y extends Error{constructor(a){super(a.message);D(this,"payload");this.name="TypedError",this.payload=a}}function Z(e){return e instanceof Y}async function ee(e){const t=L(e.currentState),a=[e.target.tagName,e.target.role??"",e.target.accessibleName??"",e.target.textSnippet??"",e.target.attrId??"",e.target.attrTestid??""].join("|");return Q(`${e.ruleId}|${e.componentId}|${t}|${a}`)}function te(e,t,a,s,n){const o=new Map(e.map(r=>[r.matchKey,r])),c=new Map(t.map(r=>[r.matchKey,r])),i=n??new Set,l=t.filter(r=>!o.has(r.matchKey)&&!i.has(r.matchKey)),d=t.filter(r=>o.has(r.matchKey)&&!i.has(r.matchKey)),p=e.filter(r=>!c.has(r.matchKey)&&!i.has(r.matchKey)),u=t.filter(r=>i.has(r.matchKey));let R,k;if(s){if(s.currentAnnouncements){const r=new Set((s.baselineAnnouncements??[]).map(b));R=s.currentAnnouncements.filter(S=>!r.has(b(S)))}if(s.currentFocusEvents){const r=new Set((s.baselineFocusEvents??[]).map(O));k=s.currentFocusEvents.filter(S=>!r.has(O(S)))}}return{new:l,persistent:d,fixed:p,newCount:l.length,persistentCount:d.length,fixedCount:p.length,baselineSnapshotMeta:a,comparedAt:new Date().toISOString(),newAnnouncements:R,newFocusEvents:k,acknowledged:u,acknowledgedCount:u.length}}function b(e){return`${e.selector}::${e.text}::${e.politeness}`}function O(e){return`${e.toSelector}::${e.isFocusReset}`}function L(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return"["+e.map(L).join(",")+"]";const t=e;return"{"+Object.keys(t).sort().map(n=>`${JSON.stringify(n)}:${L(t[n])}`).join(",")+"}"}async function Q(e){const t=new TextEncoder().encode(e),a=await crypto.subtle.digest("SHA-1",t);return Array.from(new Uint8Array(a)).map(s=>s.toString(16).padStart(2,"0")).join("")}export{Y as T,
|
|
1
|
+
var K=Object.defineProperty;var U=(e,t,a)=>t in e?K(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var D=(e,t,a)=>U(e,typeof t!="symbol"?t+"":t,a);import{c as M,o as T,k as A,t as I}from"./crash-reporter-KD5f4utB.js";const h="license:cache",$=60*60*1e3,x=24*60*60*1e3,v=7*24*60*60*1e3;async function g(){return(await chrome.storage.local.get(h))[h]??null}async function m(e){await chrome.storage.local.set({[h]:e})}async function E(){await chrome.storage.local.remove(h)}function j(e,t=Date.now()){const a=t-e.validatedAt;return a<$?"fresh":a<x?"stale":a<v?"grace":"expired"}const f=M("license-gate"),G="https://api.wcagcheckr.com",H="wcagcheckr",P=`${G}/v1/products/${H}/license/validate`,V=1e4,N="licenseToken";async function C(){return(await chrome.storage.local.get(N))[N]??null}async function F(e){await chrome.storage.local.set({[N]:e})}async function _(e){const t=await fetch(P,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({token:e}),signal:AbortSignal.timeout(V)});if(!t.ok)throw new Error(`validate http ${t.status}`);return{type:"LICENSE_VALIDATE_RESPONSE",...await t.json()}}async function y(e){const t=await g();if(t&&t.token===e){const s=j(t);if(s==="fresh")return t.response;if(s==="stale")return _(e).then(n=>m({token:e,validatedAt:Date.now(),response:n})).catch(n=>f.warn("background refresh failed",n)),t.response;if(s==="grace")try{const n=await _(e);return await m({token:e,validatedAt:Date.now(),response:n}),n}catch(n){return f.warn("grace-period revalidation failed; using last-known-good",n),t.response}}const a=await _(e);return await m({token:e,validatedAt:Date.now(),response:a}),a}function J(e){return e==="solo"||e==="solo-yearly"||e==="solo-single-month"?"solo":e==="team"||e==="team-15"||e==="team-yearly"||e==="team-15-yearly"?"team":"free"}async function w(){const e=await C();if(e)try{const t=await y(e);if(t.valid&&t.plan)return J(t.plan)}catch(t){f.warn("validation failed, falling back",t)}return"free"}async function B(){const e=await g(),t=e==null?void 0:e.response.features;if(!t||typeof t!="object")return{};const a=t.seatsUsed,s=t.seatsTotal;return{seatsUsed:typeof a=="number"?a:void 0,seatsTotal:typeof s=="number"?s:void 0}}function q(){const e=[];e.push(T("TIER_GET",async n=>{n.forceRefresh&&await E();const o=await w(),c={type:"TIER_GET_RESPONSE",tier:o};if(o==="team"){const{seatsUsed:l,seatsTotal:d}=await B();l!==void 0&&(c.seatsUsed=l),d!==void 0&&(c.seatsTotal=d)}const i=await g();if(i!=null&&i.response.valid&&i.response.plan){if(c.planCode=i.response.plan,i.response.plan==="solo-single-month"&&i.response.expiresAt){const l=new Date(i.response.expiresAt).getTime()-Date.now();c.licenseDaysRemaining=Math.max(0,Math.ceil(l/864e5))}i.response.pastDueSince&&(c.pastDue=!0)}return c})),e.push(T("LICENSE_VALIDATE_REQUEST",async n=>{try{if(n.forceRefresh){await E();const o=await y(n.token);return A({type:"LICENSE_CHANGED_EVENT",tier:await w()}),o}return await y(n.token)}catch(o){return f.error("validate failed",o),{type:"LICENSE_VALIDATE_RESPONSE",valid:!1,plan:null,email:null,status:null,expiresAt:null}}})),e.push(T("LICENSE_SET_REQUEST",async n=>{await F(n.token),await E();let o=!1,c={ok:!1,reason:"not-attempted"};try{const p=await y(n.token);if(await m({token:n.token,validatedAt:Date.now(),response:p}),o=p.valid===!0,o){const u=await I(n.token);u.ok?c={ok:!0,seatsUsed:u.seatsUsed,seatsTotal:u.seatsTotal,overCapacity:u.overCapacity}:c=u}}catch(p){f.warn("validation after set failed",p)}const i=await w();A({type:"LICENSE_CHANGED_EVENT",tier:i});const l=await g(),d=(l==null?void 0:l.response.features)??void 0;return{type:"LICENSE_SET_RESPONSE",validated:o,tier:i,features:d,seatClaim:c}})),(async()=>{try{const n=await C();n&&await I(n)}catch(n){f.debug("boot-time seat claim failed",n)}})();const t="license:periodic-refresh",a=60;chrome.alarms.get(t,n=>{n||chrome.alarms.create(t,{periodInMinutes:a})});const s=async n=>{if(n.name===t)try{const o=await C();if(!o)return;await E();const c=await y(o);await m({token:o,validatedAt:Date.now(),response:c}),A({type:"LICENSE_CHANGED_EVENT",tier:await w()}),f.debug("periodic license refresh complete")}catch(o){f.warn("periodic license refresh failed",o)}};return chrome.alarms.onAlarm.addListener(s),e.push(()=>chrome.alarms.onAlarm.removeListener(s)),f.info("handlers registered"),()=>e.forEach(n=>n())}function W(e,t,a=!1,s){return{code:e,message:t,recoverable:a,details:s}}class Y extends Error{constructor(a){super(a.message);D(this,"payload");this.name="TypedError",this.payload=a}}function Z(e){return e instanceof Y}async function ee(e){const t=L(e.currentState),a=[e.target.tagName,e.target.role??"",e.target.accessibleName??"",e.target.textSnippet??"",e.target.attrId??"",e.target.attrTestid??""].join("|");return Q(`${e.ruleId}|${e.componentId}|${t}|${a}`)}function te(e,t,a,s,n){const o=new Map(e.map(r=>[r.matchKey,r])),c=new Map(t.map(r=>[r.matchKey,r])),i=n??new Set,l=t.filter(r=>!o.has(r.matchKey)&&!i.has(r.matchKey)),d=t.filter(r=>o.has(r.matchKey)&&!i.has(r.matchKey)),p=e.filter(r=>!c.has(r.matchKey)&&!i.has(r.matchKey)),u=t.filter(r=>i.has(r.matchKey));let R,k;if(s){if(s.currentAnnouncements){const r=new Set((s.baselineAnnouncements??[]).map(b));R=s.currentAnnouncements.filter(S=>!r.has(b(S)))}if(s.currentFocusEvents){const r=new Set((s.baselineFocusEvents??[]).map(O));k=s.currentFocusEvents.filter(S=>!r.has(O(S)))}}return{new:l,persistent:d,fixed:p,newCount:l.length,persistentCount:d.length,fixedCount:p.length,baselineSnapshotMeta:a,comparedAt:new Date().toISOString(),newAnnouncements:R,newFocusEvents:k,acknowledged:u,acknowledgedCount:u.length}}function b(e){return`${e.selector}::${e.text}::${e.politeness}`}function O(e){return`${e.toSelector}::${e.isFocusReset}`}function L(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return"["+e.map(L).join(",")+"]";const t=e;return"{"+Object.keys(t).sort().map(n=>`${JSON.stringify(n)}:${L(t[n])}`).join(",")+"}"}async function Q(e){const t=new TextEncoder().encode(e),a=await crypto.subtle.digest("SHA-1",t);return Array.from(new Uint8Array(a)).map(s=>s.toString(16).padStart(2,"0")).join("")}export{Y as T,C as a,w as b,ee as c,te as d,L as e,g,Z as i,W as m,q as r};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{aY as p,aZ as g,a_ as $,a$ as v}from"./scheduled-audit-runner-J6cea_BZ.js";import{k as w,c as E,r as T}from"./crash-reporter-KD5f4utB.js";import"./preload-helper-D7HrI6pR.js";import"./diff-Dc5xUcCG.js";import"./ai-usage-log-CYuyLsU4.js";const m=E("parallel-tab-flow");async function S(s){const n=performance.now(),a=p(s.matrix),o=Math.max(1,Math.min(s.parallelism??4,8)),i=[];for(let e=0;e<o;e++)i.push([]);a.forEach((e,b)=>{i[b%o].push(e)}),m.info(`parallel-tab audit starting: ${a.length} states across ${o} tabs (~${Math.ceil(a.length/o)} states/tab)`);const r=a.length;let t=0;a[0]&&w({type:"AUDIT_PROGRESS_EVENT",current:0,total:r,currentState:a[0]});const l=e=>{t++,w({type:"AUDIT_PROGRESS_EVENT",current:t,total:r,currentState:e})},d=i.map((e,b)=>e.length===0?Promise.resolve({results:[],failed:!1}):y(s.targetUrl,s.scope,e,b,s.cancel,l)),h=await Promise.all(d),c=[];let u=0,f=0;for(const e of h)e.failed?f++:u++,c.push(...e.results);return{results:c,parallelDurationMs:performance.now()-n,tabsCompleted:u,tabsFailed:f}}async function y(s,n,a,o,i,r){let t;const l=[];try{const d=await chrome.tabs.create({url:s,active:!1});if(!d.id)throw new Error("chrome.tabs.create returned no id");if(t=d.id,m.debug(`worker ${o}: opened tab ${t}`),await U(t),i.isCanceled())throw new Error("canceled");const h=await g(t,0);if(!h.ok)throw new Error(`content script unreachable: ${h.reason}`);for(let c=0;c<a.length&&!i.isCanceled();c++){const u=a[c];try{if(!(await $(t,u,n)).success){m.warn(`worker ${o} state ${c+1}/${a.length} drive failed`),r==null||r(u);continue}const e=await T(t,{type:"AUDIT_REQUEST",selector:n,currentState:u});e.success&&e.result&&l.push({...e.result,violations:e.result.violations})}catch(f){m.debug(`worker ${o} state ${c+1} error`,f)}finally{r==null||r(u)}}try{await v(t,n)}catch{}return{results:l,failed:!1}}catch(d){return m.warn(`worker ${o} failed`,d),{results:l,failed:!0}}finally{if(t!==void 0)try{await chrome.tabs.remove(t)}catch{}}}function U(s,n=3e4){return new Promise((a,o)=>{const i=setTimeout(()=>{chrome.tabs.onUpdated.removeListener(r),o(new Error(`tab ${s} load timed out after ${n}ms`))},n),r=(t,l)=>{t===s&&l.status==="complete"&&(clearTimeout(i),chrome.tabs.onUpdated.removeListener(r),a())};chrome.tabs.onUpdated.addListener(r),chrome.tabs.get(s).then(t=>{t.status==="complete"&&(clearTimeout(i),chrome.tabs.onUpdated.removeListener(r),a())})})}export{S as runParallelTabAudit};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{v as t,w as i,x as e,aS as n}from"./scheduled-audit-runner-J6cea_BZ.js";import{c as o}from"./crash-reporter-KD5f4utB.js";const c=o("rubric-config-client"),f="wcagcheckr",u=`https://api.wcagcheckr.com/v1/products/${f}/rubrics`,h=1e4,s="rubric-config-refresh",d=60;async function b(){const r=await t();if(!r){e(null);return}if(i(r)==="expired"){c.warn("cached rubrics are expired (>7d); falling back to bundled defaults"),e(null);return}e(r.config)}async function g(){try{const r=await fetch(u,{signal:AbortSignal.timeout(h),headers:{accept:"application/json"}});if(!r.ok)throw new Error(`http ${r.status}`);const a=await r.json();await n({fetchedAt:Date.now(),config:a}),e(a),c.info("rubrics refreshed from server")}catch(r){c.warn("rubric refresh failed; keeping prior cache",r)}}function m(){chrome.alarms.create(s,{periodInMinutes:d}),chrome.alarms.onAlarm.addListener(r=>{r.name===s&&g()})}export{m as a,g as r,b as w};
|