blocfeed 0.9.0 → 0.10.0

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.
@@ -1,2 +0,0 @@
1
- 'use strict';function b(){return typeof window<"u"&&typeof document<"u"}function ke(e){let t=globalThis.CSS;return typeof t?.escape=="function"?t.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,n=>{let r=n.codePointAt(0);return r===void 0?"":`\\${r.toString(16)} `})}function re(e){return {x:e.x,y:e.y,width:e.width,height:e.height}}function Ge(e){return {x:e.x+window.scrollX,y:e.y+window.scrollY,width:e.width,height:e.height}}function Je(e){return e.replace(/\s+/g," ").trim()}function oe(e,t=140){let n=e.textContent;if(!n)return;let r=Je(n);if(r)return r.length<=t?r:`${r.slice(0,t-1)}\u2026`}function et(e){let t=1;for(let n=e.previousElementSibling;n;n=n.previousElementSibling)n.tagName===e.tagName&&(t+=1);return t}var Re=["data-testid","data-test-id","data-test","data-qa","data-cy"],Se="data-blocfeed-component";function ie(e){let t=e.closest(`[${Se}]`);if(!t)return;let r=t.getAttribute(Se)?.trim();return r||void 0}function tt(e){for(let t of Re){let n=e.closest(`[${t}]`);if(!n)continue;let o=n.getAttribute(t)?.trim();if(o)return o}}function ve(e){try{let t=e,n=Object.getOwnPropertyNames(t);for(let r of n)if(r.startsWith("__reactFiber$")||r.startsWith("__reactInternalInstance$")){let o=t[r];if(o&&typeof o=="object")return o}}catch{}return null}function B(e){if(e.length<=1||e.length===2&&e[0]===e[0].toLowerCase())return true;let t=e[0];return t>="a"&&t<="z"}function q(e){if(e){for(let t of e)if(typeof t.name=="string"&&t.name&&!B(t.name))return t.name}}function A(e){if(e&&typeof e!="string"){if(typeof e=="function"){let t=e;return typeof t.displayName=="string"&&t.displayName?t.displayName:typeof t.name=="string"&&t.name?t.name:void 0}if(typeof e=="object"){let t=e,n=t.displayName;if(typeof n=="string"&&n)return n;let r=t.render;if(typeof r=="function"){let i=r;if(typeof i.displayName=="string"&&i.displayName)return i.displayName;if(typeof i.name=="string"&&i.name)return i.name}let o=t.type;return A(o)}}}function ae(e){let t=ve(e);if(!t)return;let n=q(t._debugInfo);if(n)return n;let r=t._debugOwner!==void 0;if(r){let s=t._debugOwner;for(let c=0;s&&c<50;c+=1){let h=q(s._debugInfo);if(h)return h;let p=A(s.type)??A(s.elementType);if(p&&!B(p))return p;s=s._debugOwner;}}if(t._owner!==void 0&&t._owner!==t._debugOwner){let s=t._owner;for(let c=0;s&&c<50;c+=1){let h=q(s._debugInfo);if(h)return h;let p=A(s.type)??A(s.elementType);if(p&&!B(p))return p;s=s._owner;}}let i=t,l=r?80:25;for(let s=0;i&&s<l;s+=1){let c=q(i._debugInfo);if(c)return c;let h=A(i.type)??A(i.elementType);if(h&&!B(h))return h;i=i.return;}let a=e.parentElement;for(let s=0;a&&s<15;s+=1){let c=ve(a);if(c){let h=q(c._debugInfo);if(h)return h;let p=A(c.type)??A(c.elementType);if(p&&!B(p))return p;if(c._debugOwner){let m=A(c._debugOwner.type)??A(c._debugOwner.elementType);if(m&&!B(m))return m}if(c._owner&&c._owner!==c._debugOwner){let m=A(c._owner.type)??A(c._owner.elementType);if(m&&!B(m))return m}}a=a.parentElement;}}function nt(e){let t=e.tagName.toLowerCase(),n=e.getAttribute("id");if(n)return `#${ke(n)}`;for(let r of Re){let o=e.getAttribute(r);if(o)return `${t}[${r}="${ke(o)}"]`}return `${t}:nth-of-type(${et(e)})`}function rt(e,t=10){let n=[],r=e;for(;r&&n.length<t;){let o=nt(r);if(n.unshift(o),o.startsWith("#"))break;r=r.parentElement;}return n.join(" > ")}function _e(e,t){if(!t||t.length===0)return false;for(let n of t)if(e.closest(n))return true;return false}function se(e,t){if(!e||_e(e,t.ignoreSelectors))return null;let n=e;for(;n;){if(_e(n,t.ignoreSelectors))return null;if(t.isSelectable?.(n)??ot(n))return n;n=n.parentElement;}return null}function ot(e){let t=e.tagName;return !(t==="HTML"||t==="BODY")}function Ae(e){let t=e.getBoundingClientRect(),n={selector:rt(e),tagName:e.tagName.toLowerCase(),rect:re(t),pageRect:Ge(t)},r=e.getAttribute("id");r&&(n.id=r);let o=e.className;typeof o=="string"&&o.trim()&&(n.className=o);let i=oe(e);i&&(n.textSnippet=i);let l=ie(e)??ae(e);l&&(n.componentName=l);let a=tt(e);return a&&(n.testId=a),n}var ce=null;async function Te(){return ce||(ce=import('html-to-image')),ce}async function it(e){return await new Promise((t,n)=>{let r=new Image;r.onload=()=>t({width:r.naturalWidth,height:r.naturalHeight}),r.onerror=()=>n(new Error("Failed to load generated screenshot")),r.src=e;})}async function xe(e,t){let{width:n,height:r}=await it(e);return {dataUrl:e,mime:t,width:n,height:r}}function O(e){if(e?.aborted)throw new Error("Aborted")}function Pe(){return {async captureElement(e,t){if(!b())throw new Error("captureElement can only run in the browser");O(t.signal);let n=await Te();O(t.signal);let r=t.mime==="image/jpeg"?await n.toJpeg(e,{quality:t.quality??.92,pixelRatio:t.pixelRatio}):await n.toPng(e,{pixelRatio:t.pixelRatio});return O(t.signal),await xe(r,t.mime)},async captureFullPage(e){if(!b())throw new Error("captureFullPage can only run in the browser");O(e.signal);let t=document.documentElement,n=Math.max(t.scrollWidth,t.clientWidth),r=Math.max(t.scrollHeight,t.clientHeight),o=Math.min(1,e.maxDimension/Math.max(n,r)),i=Math.max(1,Math.round(n*o)),l=Math.max(1,Math.round(r*o)),a=await Te();O(e.signal);let s=e.mime==="image/jpeg"?await a.toJpeg(t,{width:i,height:l,quality:e.quality??.92,pixelRatio:e.pixelRatio}):await a.toPng(t,{width:i,height:l,pixelRatio:e.pixelRatio});return O(e.signal),await xe(s,e.mime)}}}function at(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return "Unknown error"}}function w(e,t,n){let r={kind:e,message:at(t)};return n&&(r.detail=n),r}var st=12e3,ct=2048,lt=.92;function Ce(){return Date.now()}function ut(e){return new Promise((t,n)=>{let r=()=>n(new Error("Aborted"));if(e.aborted){r();return}e.addEventListener("abort",r,{once:true});})}async function Fe(e,t,n){let r=new Promise((i,l)=>{let a=setTimeout(()=>l(new Error("Timeout")),t);typeof a.unref=="function"&&a.unref();}),o=[e,r];return n&&o.push(ut(n)),await Promise.race(o)}function dt(e){if(!b())return 1;let t=window.devicePixelRatio||1,n=e?.pixelRatio??Math.min(t,2);return Math.max(.1,n)}function ft(e){return !!(e?.element||e?.fullPage)}function Me(e){let t={mime:e.mime,pixelRatio:e.pixelRatio,maxDimension:e.maxDimension};return e.includeQuality&&(t.quality=e.quality),e.signal&&(t.signal=e.signal),t}async function Le(e){let{selectionElement:t,capture:n,signal:r}=e;if(!b()||!ft(n))return;let o=Ce(),i=[],l=n?.timeoutMs??st,a=n?.maxDimension??ct,s=n?.mime??"image/png",c=n?.quality??lt,h=n?.adapter??Pe(),p={},m=dt(n);if(n?.element&&t)try{let f=t.getBoundingClientRect(),g=Math.min(1,a/Math.max(f.width,f.height)),S=Math.min(m,m*g),_=await Fe(Promise.resolve(h.captureElement(t,{...Me({mime:s,quality:c,pixelRatio:S,maxDimension:a,includeQuality:s==="image/jpeg",...r?{signal:r}:{}})})),l,r);p.element=_;}catch(f){if(r?.aborted)throw f;i.push(w("capture_failed",f,{target:"element"}));}if(n?.fullPage)try{let f=await Fe(Promise.resolve(h.captureFullPage(Me({mime:s,quality:c,pixelRatio:m,maxDimension:a,includeQuality:s==="image/jpeg",...r?{signal:r}:{}}))),l,r);p.fullPage=f;}catch(f){if(r?.aborted)throw f;i.push(w("capture_failed",f,{target:"fullPage"}));}let y=Ce(),u={startedAt:o,finishedAt:y,durationMs:Math.max(0,y-o)};return i.length>0&&(u.errors=i),{...p,diagnostics:u}}function mt(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function pt(){return b()?{url:window.location.href,title:document.title,referrer:document.referrer||void 0,userAgent:navigator.userAgent,language:navigator.language,platform:navigator.platform,viewport:{width:window.innerWidth,height:window.innerHeight},screen:{width:window.screen.width,height:window.screen.height},scroll:{x:window.scrollX,y:window.scrollY},devicePixelRatio:window.devicePixelRatio||1,timezone:mt()}:{}}function gt(e){if(!e)return {};let t={};return e.id&&(t.userId=e.id),e.email&&(t.userEmail=e.email),e.name&&(t.userName=e.name),t}async function De(e){let{config:t,context:n,user:r}=e;if(t?.enabled===false)return {};let o={...pt(),...gt(r)},i=t?.enrich;if(!i)return o;try{let l=await i(n);return {...o,...l}}catch(l){let a=w("unknown",l);return {...o,blocfeedMetadataError:a.message}}}var le="blocfeed-queue",ht=50;function ue(){if(!b())return [];try{let e=localStorage.getItem(le);if(!e)return [];let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return []}}function de(e){if(b())try{e.length===0?localStorage.removeItem(le):localStorage.setItem(le,JSON.stringify(e));}catch{}}function wt(e){let t={...e};if(t.screenshots){let n={...t.screenshots};n.element&&(n.element={...n.element,dataUrl:""}),n.fullPage&&(n.fullPage={...n.fullPage,dataUrl:""}),t.screenshots=n;}return delete t.video,t}function fe(e){let t=ue(),n=wt(e);for(n.metadata={...n.metadata,_queued:true},t.push({payload:n,timestamp:Date.now()});t.length>ht;)t.shift();de(t);}function Be(){let e=ue();return e.length===0?[]:(de([]),e.map(t=>t.payload))}function ln(){de([]);}function un(){return ue().length}var bt=200,z=[],Ie=0,Q=false;function Ne(e){let t=e.target;if(!(t instanceof Element)||t.closest("[data-blocfeed-ui]"))return;let n={timestampMs:Date.now()-Ie,path:window.location.pathname,tagName:t.tagName.toLowerCase()},r=oe(t,100);r&&(n.textSnippet=r);let o=ie(t)??ae(t);o&&(n.componentName=o),z.length<bt&&z.push(n);}function Oe(){Q||!b()||(Q=true,z=[],Ie=Date.now(),document.addEventListener("click",Ne,{capture:true,passive:true}));}function Ue(){Q&&(Q=false,document.removeEventListener("click",Ne,{capture:true}));}function yt(){return [...z]}function Et(){z=[];}var kt=3e4,St=25e5,He="video/webm",vt=250,_t=1e3,Rt=["video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];function qe(){if(typeof MediaRecorder>"u")return null;for(let e of Rt)if(MediaRecorder.isTypeSupported(e))return e;return null}function At(){return !b()||typeof navigator?.mediaDevices?.getDisplayMedia!="function"?false:qe()!==null}async function me(e){let{config:t,signal:n}=e;if(!b()||typeof navigator?.mediaDevices?.getDisplayMedia!="function")throw w("recording_failed",new Error("Screen recording is not supported in this browser"));let r=qe();if(!r)throw w("recording_failed",new Error("No supported video codec found (WebM required)"));if(n?.aborted)throw w("aborted",new Error("Recording aborted before start"));let o;try{o=await navigator.mediaDevices.getDisplayMedia({video:{displaySurface:"browser"},audio:!1});}catch(g){let S=g instanceof DOMException&&g.name==="NotAllowedError"?"Screen share permission denied":"Failed to start screen share";throw w("recording_failed",new Error(S))}if(n?.aborted)throw o.getTracks().forEach(g=>g.stop()),w("aborted",new Error("Recording aborted after permission"));let i=t?.maxDurationMs??kt,l=t?.videoBitsPerSecond??St,a=new MediaRecorder(o,{mimeType:r,videoBitsPerSecond:l}),s=[],c=[],h=0,p=null,m=null,y=false,u=()=>{Ue(),p!==null&&(clearInterval(p),p=null),m!==null&&(clearTimeout(m),m=null),o.getTracks().forEach(g=>g.stop());},f=new Promise((g,S)=>{a.ondataavailable=E=>{E.data.size>0&&s.push(E.data);},a.onstop=()=>{if(y)return;y=true,u();let E=Date.now()-h,x=new Blob(s,{type:He}),M=URL.createObjectURL(x);g({mime:He,blobUrl:M,blob:x,durationMs:E,sizeBytes:x.size});},a.onerror=()=>{y||(y=true,u(),S(w("recording_failed",new Error("MediaRecorder error"))));};let _=o.getVideoTracks()[0];if(_&&_.addEventListener("ended",()=>{a.state!=="inactive"&&a.stop();}),n){let E=()=>{y||(y=true,a.state!=="inactive"&&a.stop(),u(),S(w("aborted",new Error("Recording aborted"))));};n.addEventListener("abort",E,{once:true});}});return a.start(_t),Oe(),h=Date.now(),p=setInterval(()=>{let g=Date.now()-h;for(let S of c)S(g);},vt),m=setTimeout(()=>{!y&&a.state!=="inactive"&&a.stop();},i),{result:f,stop(){!y&&a.state!=="inactive"&&a.stop();},onTick(g){c.push(g);},abort(){y||(y=true,a.state!=="inactive"&&a.stop(),u());}}}function pe(e){let t=null,n=null,r=(...o)=>{n=o,t===null&&(t=requestAnimationFrame(()=>{if(t=null,!n)return;let i=n;n=null,e(...i);}));};return r.cancel=()=>{t!==null&&cancelAnimationFrame(t),t=null,n=null;},r}function Y(e){return e instanceof Element?!!e.closest("[data-blocfeed-ui]"):false}function G(e){e.stopPropagation(),e.stopImmediatePropagation?.();}function ze(e,t){if(!b())throw new Error("BlocFeed picker can only run in a browser environment.");let n=e.ignoreSelectors,r=e.isSelectable,o={};n&&n.length>0&&(o.ignoreSelectors=n),r&&(o.isSelectable=r);let i=null,l=null,a=(u,f=false)=>{if(!u){i=null,l=null,t.onHover(null);return}let g=re(u.getBoundingClientRect()),S=`${Math.round(g.x)}:${Math.round(g.y)}:${Math.round(g.width)}:${Math.round(g.height)}`;!f&&u===i&&S===l||(i=u,l=S,t.onHover({element:u,rect:g}));},s=pe(u=>{if(Y(u.target))return;let f=document.elementFromPoint(u.clientX,u.clientY),g=se(f,o);a(g);}),c=pe(()=>{i&&a(i,true);}),h=u=>{Y(u.target)||(G(u),u.pointerType==="mouse"&&u.preventDefault());},p=u=>{Y(u.target)||(G(u),u.pointerType==="mouse"&&u.preventDefault());},m=u=>{if(Y(u.target))return;G(u),u.preventDefault();let f=document.elementFromPoint(u.clientX,u.clientY),g=se(f,o);g&&t.onSelect({element:g,descriptor:Ae(g)});},y=u=>{u.key==="Escape"&&(G(u),u.preventDefault(),t.onCancel());};return window.addEventListener("pointermove",s,{capture:true,passive:true}),window.addEventListener("pointerdown",h,{capture:true}),window.addEventListener("pointerup",p,{capture:true}),window.addEventListener("click",m,{capture:true}),window.addEventListener("keydown",y,{capture:true}),window.addEventListener("scroll",c,{capture:true,passive:true}),window.addEventListener("resize",c,{passive:true}),{stop(){window.removeEventListener("pointermove",s,{capture:true}),window.removeEventListener("pointerdown",h,{capture:true}),window.removeEventListener("pointerup",p,{capture:true}),window.removeEventListener("click",m,{capture:true}),window.removeEventListener("keydown",y,{capture:true}),window.removeEventListener("scroll",c,{capture:true}),window.removeEventListener("resize",c),s.cancel(),c.cancel(),t.onHover(null);}}}var Tt=12e3,xt=2,Pt=500,Ct=2e3,ge="https://blocfeed.com/api/feedback",$e=0;function je(e,t){return new Promise((n,r)=>{if(t?.aborted){r(new Error("Aborted"));return}let o=setTimeout(n,e),i=()=>{clearTimeout(o),r(new Error("Aborted"));};t?.addEventListener("abort",i,{once:true});})}function Ft(e){return e>=500&&e<=599}function Mt(e){let[t,n]=e.split(",",2);if(!t||!n)throw new Error("Invalid data URL");let o=/data:(.*?);base64/.exec(t)?.[1]||"application/octet-stream",i=atob(n),l=new Uint8Array(i.length);for(let a=0;a<i.length;a+=1)l[a]=i.charCodeAt(a);return new Blob([l],{type:o})}function Lt(e){let t={},n={},r={...e};if(r.screenshots){let o={},i={...r.screenshots};i.element&&(t.element=i.element.dataUrl,o.element={mime:i.element.mime,width:i.element.width,height:i.element.height},i.element={...i.element,dataUrl:""}),i.fullPage&&(t.fullPage=i.fullPage.dataUrl,o.fullPage={mime:i.fullPage.mime,width:i.fullPage.width,height:i.fullPage.height},i.fullPage={...i.fullPage,dataUrl:""}),r.screenshots=i,(o.element||o.fullPage)&&(r.screenshot_intent=o);}return r.video&&(n.blob=r.video.blob,r.video_intent={mime:r.video.mime,durationMs:r.video.durationMs,sizeBytes:r.video.sizeBytes},delete r.video),{lean:r,extracted:t,extractedVideo:n}}async function Ve(e,t,n){let r=Mt(t);await fetch(e,{method:"PUT",body:r,headers:{"content-type":r.type},...n?{signal:n}:{}});}async function Dt(e){let{feedbackId:t,extracted:n,screenshots:r,signal:o}=e,i={};n.element&&r?.element&&(i.element={dataUrl:n.element,mime:r.element.mime,width:r.element.width,height:r.element.height}),n.fullPage&&r?.fullPage&&(i.fullPage={dataUrl:n.fullPage,mime:r.fullPage.mime,width:r.fullPage.width,height:r.fullPage.height}),Object.keys(i).length!==0&&await fetch(`${ge}/${t}/screenshots`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i),...o?{signal:o}:{}});}async function Bt(e){await fetch(`${ge}/${e.feedbackId}/video`,{method:"POST",body:e.blob,headers:{"content-type":e.blob.type},...e.signal?{signal:e.signal}:{}});}async function Xe(e){let{signal:t,transport:n}=e;if(Date.now()-$e<Ct)return {ok:false,error:w("configuration",new Error("Please wait before submitting again"))};let o=n?.timeoutMs??Tt,i=n?.maxAttempts??xt,l=n?.backoffMs??Pt,a=!!(e.payload.screenshots?.element?.dataUrl||e.payload.screenshots?.fullPage?.dataUrl),s=!!e.payload.video?.blob,c=a||s,{lean:h,extracted:p,extractedVideo:m}=c?Lt(e.payload):{lean:e.payload,extracted:{},extractedVideo:{}},y={...p,...e.screenshotDataUrls};for(let u=1;u<=i;u+=1){let f=new AbortController,g=setTimeout(()=>f.abort(),o),S=()=>f.abort();t&&t.addEventListener("abort",S,{once:true});try{let _=await fetch(ge,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(h),signal:f.signal});if(_.ok){$e=Date.now();let E;try{E=await _.json();}catch{}if((y.element||y.fullPage)&&E){let d=E.upload_urls;if(d){let k=[];y.element&&d.element&&k.push(Ve(d.element,y.element,t)),y.fullPage&&d.fullPage&&k.push(Ve(d.fullPage,y.fullPage,t));try{await Promise.all(k);}catch{}}else if(E.feedback_id)try{await Dt({feedbackId:E.feedback_id,extracted:y,screenshots:e.payload.screenshots,...t?{signal:t}:{}});}catch{}}if(m.blob&&E){let d=E.upload_urls;if(d?.video)try{await fetch(d.video,{method:"PUT",body:m.blob,headers:{"content-type":m.blob.type},...t?{signal:t}:{}});}catch{}else if(E.feedback_id)try{await Bt({feedbackId:E.feedback_id,blob:m.blob,...t?{signal:t}:{}});}catch{}}let M={ok:!0,status:_.status};return E&&(M.apiResponse=E),M}if(u<i&&Ft(_.status)){let E=.85+Math.random()*.3,x=Math.round(l*2**(u-1)*E);await je(x,t);continue}return {ok:!1,status:_.status,error:w("api_failed",new Error(`HTTP ${_.status}`))}}catch(_){if(f.signal.aborted||t?.aborted)return {ok:false,error:w("aborted",_)};if(u<i){let E=.85+Math.random()*.3,x=Math.round(l*2**(u-1)*E);await je(x,t);continue}return {ok:false,error:w("api_failed",_)}}finally{clearTimeout(g),t&&t.removeEventListener("abort",S);}}return {ok:false,error:w("api_failed",new Error("Failed"))}}async function he(e){let{signal:t,transport:n}=e,r={ok:false};try{let o={payload:e.payload,...t?{signal:t}:{},...n?{transport:n}:{}};r.api=await Xe(o),r.ok=!!r.api?.ok;}catch(o){r.api={ok:false,error:w("api_failed",o)},r.ok=false;}return {payload:e.payload,result:r}}var It=["[data-blocfeed-ui]","[data-blocfeed-ignore]"];function Nt(e){let t=[...It,...e?.ignoreSelectors??[]],n=Array.from(new Set(t));return {...e,ignoreSelectors:n}}function Ze(){return {phase:"idle"}}function Ot(e){if(e.ok)return false;let t=e.api;return t?t.status&&t.status>=400&&t.status<500||t.error?.kind==="aborted"||t.error?.kind==="configuration"?false:!t.ok:true}function On(e){let t=e,n=Ze(),r=new Set,o=new Set,i=null,l=null,a=null,s=null,c=0,h=null,p=null,m=null,y=()=>{for(let d of r)d(n);},u=d=>{for(let k of o)k(d);},f=d=>{n=d,y();},g=()=>{c+=1,s?.abort(),s=null;},S=()=>{i?.stop(),i=null,u(null),a!==null&&b()&&(document.documentElement.style.cursor=a,a=null);},_=()=>{p&&(p.abort(),p=null),m&&(URL.revokeObjectURL(m.blobUrl),m=null);},E=()=>{g(),S(),_(),l=null,f(Ze());},x=()=>{if(!b())return;S(),l=null;let d=Nt(t.picker);a=document.documentElement.style.cursor,document.documentElement.style.cursor="crosshair",f({phase:"picking"}),i=ze(d,{onHover:u,onSelect:({element:k,descriptor:P})=>{l=k,S(),f({phase:"review",selection:P});},onCancel:()=>{E();}});},M=()=>{let d=Be();if(d.length!==0)for(let k of d)he({payload:k,...t.transport?{transport:t.transport}:{}}).catch(()=>{fe(k);});};if(b()){setTimeout(M,1e3);let d=()=>M();window.addEventListener("online",d),h=()=>window.removeEventListener("online",d);}return {getState:()=>n,subscribe(d){return r.add(d),()=>r.delete(d)},subscribeHover(d){return o.add(d),()=>o.delete(d)},start(){n.phase==="capturing"||n.phase==="submitting"||n.phase==="recording"||n.phase!=="picking"&&x();},stop(){E();},clearSelection(){n.phase==="capturing"||n.phase==="submitting"||n.phase==="recording"||x();},setConfig(d){t=d;},async submit(d,k){if(!b()){let R=w("configuration",new Error("BlocFeed submit can only run in the browser"));return f({phase:"error",lastError:R}),{ok:false}}let P=t.blocfeed_id?.trim?.()??"";if(!P){let L={phase:"error",lastError:w("configuration",new Error("Missing blocfeed_id. Create a project in BlocFeed and pass its blocfeed_id."))};return n.selection&&(L.selection=n.selection),f(L),{ok:false}}if(n.phase==="capturing"||n.phase==="submitting"||n.phase==="recording")return {ok:false};let C=c+1;c=C,s?.abort(),s=new AbortController;let T=s.signal,v=n.selection,U=k?.capture?{...t.capture,...k.capture}:t.capture,H=!!(U?.element||U?.fullPage),Ee={phase:H?"capturing":"submitting"};v&&(Ee.selection=v),f(Ee);try{let R=H?await Le({selectionElement:l,capture:U,signal:T}):void 0;if(T.aborted||c!==C)return {ok:!1};let L={phase:"submitting"};v&&(L.selection=v),R&&(L.capture=R),f(L);let N={};v&&(N.selection=v),R&&(N.capture=R);let Qe=await De({config:t.metadata,context:N,...t.user?{user:t.user}:{}}),D={version:1,createdAt:new Date().toISOString(),blocfeed_id:P,message:d,metadata:Qe};k?.category&&(D.category=k.category),t.user&&(D.user=t.user),v&&(D.selection=v),R&&(D.screenshots=R),m&&(D.video=m);let{result:F}=await he({payload:D,signal:T,...t.transport?{transport:t.transport}:{}});if(T.aborted||c!==C)return F;if(F.ok){m&&(URL.revokeObjectURL(m.blobUrl),m=null);let ne={phase:"success",lastSubmit:F};return v&&(ne.selection=v),R&&(ne.capture=R),f(ne),F}Ot(F)&&fe(D);let Ye=F.api?.error??w("unknown",new Error("Submission failed")),te={phase:"error",lastSubmit:F,lastError:Ye};return v&&(te.selection=v),R&&(te.capture=R),f(te),F}catch(R){if(T.aborted||c!==C)return {ok:false};let N={phase:"error",lastError:T.aborted?w("aborted",R):w("unknown",R)};return v&&(N.selection=v),f(N),{ok:false}}finally{c===C&&(s=null);}},async startRecording(){if(n.phase!=="review"||!t.recording?.enabled)return;let d=n.selection,k={phase:"recording",recordingElapsedMs:0};d&&(k.selection=d),f(k);try{let P={config:t.recording};s&&(P.signal=s.signal);let C=await me(P);p=C,C.onTick(U=>{if(n.phase==="recording"){let H={phase:"recording",recordingElapsedMs:U};d&&(H.selection=d),f(H);}});let T=await C.result;p=null,m=T;let v={phase:"review",video:T};d&&(v.selection=d),f(v);}catch(P){p=null;let T={phase:"review",lastError:P?.kind?P:w("recording_failed",P)};d&&(T.selection=d),f(T);}},stopRecording(){n.phase!=="recording"||!p||p.stop();},removeVideo(){m&&(URL.revokeObjectURL(m.blobUrl),m=null);let d=n.selection,k={phase:"review"};d&&(k.selection=d),f(k);},__unsafeGetSelectedElement(){return l},destroy(){E(),r.clear(),o.clear(),h?.(),h=null;}}}var $=[],j=[],We=20,Ke=15,J=[],V={},X=null,Z=null,W=null,ee=false,Ut=["blocfeed.com","google-analytics.com","googletagmanager.com","analytics.google.com","googleads.g.doubleclick.net","googlesyndication.com","googleadservices.com","google.com/pagead","google.com/ads","facebook.net","facebook.com/tr","connect.facebook.net","graph.facebook.com","api.mixpanel.com","api-js.mixpanel.com","api.amplitude.com","api2.amplitude.com","api.segment.io","cdn.segment.com","vars.hotjar.com","in.hotjar.com","script.hotjar.com","heapanalytics.com","fullstory.com/s/fs.js","rs.fullstory.com","app.posthog.com","us.posthog.com","eu.posthog.com","api-iam.intercom.io","widget.intercom.io","sentry.io/api","browser.sentry-cdn.com","browser-intake-datadoghq.com","clarity.ms","js.hs-analytics.net","api.hubapi.com","forms.hubspot.com","plausible.io/api","client.crisp.chat","js.driftt.com","r.logrocket.com","app.pendo.io","events.launchdarkly.com","app.launchdarkly.com","grammarly.com","gnar.grammarly.com","capi.grammarly.com","api.languagetool.org","api.languagetoolplus.com","fonts.googleapis.com","fonts.gstatic.com","cdn.cookielaw.org","consent.cookiebot.com","js.stripe.com","api.stripe.com/v1/tokens","google.com/recaptcha","hcaptcha.com","bam.nr-data.net","rec.smartlook.com","o2.mouseflow.com","api.luckyorange.com","static.zdassets.com","ekr.zdassets.com"];function Ht(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}function qt(e,t){let n=t.map(Ht).join(" "),r=t.find(i=>i instanceof Error),o={level:e,message:n.slice(0,2e3),timestamp:Date.now()};for(r?.stack&&(o.stack=r.stack.slice(0,2e3)),$.push(o);$.length>We;)$.shift();}function we(e){let t=e.url.toLowerCase();for(let n of J)if(t.includes(n))return;for(j.push(e);j.length>Ke;)j.shift();}function qn(e={}){if(ee||!b())return;ee=true,We=e.consoleLimit??20,Ke=e.networkLimit??15;let t=e.ignoreUrls;if(t!==void 0?J=t.map(n=>n.toLowerCase()):J=[...Ut],e.console!==false){let n=e.consoleLevels??["error","warn"];for(let r of n)V[r]=console[r],console[r]=(...o)=>{qt(r,o),V[r]?.apply(console,o);};}if(e.network!==false&&typeof window.fetch=="function"){X=window.fetch;let n=X;window.fetch=async function(o,i){let l=typeof o=="string"?o:o instanceof URL?o.toString():o.url,a=(i?.method??"GET").toUpperCase(),s=Date.now();try{let c=await n.call(window,o,i);return c.ok||we({url:l.slice(0,500),method:a,status:c.status,statusText:c.statusText,timestamp:s,durationMs:Date.now()-s}),c}catch(c){throw we({url:l.slice(0,500),method:a,status:0,statusText:c instanceof Error?c.message:"Network error",timestamp:s,durationMs:Date.now()-s}),c}};}if(e.network!==false&&typeof XMLHttpRequest<"u"){Z=XMLHttpRequest.prototype.open,W=XMLHttpRequest.prototype.send;let n=Z,r=W;XMLHttpRequest.prototype.open=function(o,i,...l){return this.__bf_method=o.toUpperCase(),this.__bf_url=String(i),n.apply(this,[o,i,...l])},XMLHttpRequest.prototype.send=function(...o){let i=this.__bf_method||"GET",l=this.__bf_url||"",a=Date.now();return this.addEventListener("loadend",function(){if(this.status>=400||this.status===0){let s={url:l.slice(0,500),method:i,status:this.status,timestamp:a,durationMs:Date.now()-a};this.statusText&&(s.statusText=this.statusText),we(s);}}),r.apply(this,o)};}}function zn(){if(ee){for(let[e,t]of Object.entries(V))console[e]=t;for(let e of Object.keys(V))delete V[e];X&&(window.fetch=X,X=null),Z&&(XMLHttpRequest.prototype.open=Z,Z=null),W&&(XMLHttpRequest.prototype.send=W,W=null),J=[],ee=false;}}function $n(){return {consoleLogs:[...$],networkErrors:[...j]}}function jn(){$=[],j=[];}var zt=[{name:"supabase_service_role_key",pattern:/SUPABASE_SERVICE_ROLE_KEY["'=:\s]+[A-Za-z0-9_.=-]{30,}/},{name:"supabase_db_password",pattern:/SUPABASE_DB_PASSWORD["'=:\s]+[^\s"']{6,}/},{name:"postgres_password",pattern:/POSTGRES_PASSWORD["'=:\s]+[^\s"']{6,}/},{name:"database_url_with_creds",pattern:/(?:postgres|postgresql|mysql|mongodb|redis|amqp):\/\/[^:]+:[^@\s"']+@/},{name:"aws_access_key",pattern:/AKIA[0-9A-Z]{16}/},{name:"aws_secret_key",pattern:/AWS_SECRET_ACCESS_KEY["'=:\s]+[A-Za-z0-9/+=]{30,}/},{name:"aws_session_token",pattern:/AWS_SESSION_TOKEN["'=:\s]+[A-Za-z0-9/+=]{30,}/},{name:"stripe_secret_key",pattern:/sk_live_[a-zA-Z0-9]{10,}/},{name:"stripe_secret_key_test",pattern:/sk_test_[a-zA-Z0-9]{10,}/},{name:"stripe_restricted_key",pattern:/rk_(?:live|test)_[a-zA-Z0-9]{10,}/},{name:"github_pat",pattern:/ghp_[A-Za-z0-9_]{36,}/},{name:"github_oauth",pattern:/gho_[A-Za-z0-9_]{36,}/},{name:"github_user_token",pattern:/ghu_[A-Za-z0-9_]{36,}/},{name:"github_server_token",pattern:/ghs_[A-Za-z0-9_]{36,}/},{name:"github_fine_grained",pattern:/github_pat_[A-Za-z0-9_]{22,}/},{name:"openai_api_key",pattern:/sk-[a-zA-Z0-9]{20,}(?![a-zA-Z0-9_])/},{name:"anthropic_api_key",pattern:/sk-ant-[a-zA-Z0-9\-_]{20,}/},{name:"private_key",pattern:/-----BEGIN (?:RSA |EC |DSA |OPENSSH |PGP )?PRIVATE KEY-----/},{name:"sendgrid_api_key",pattern:/SG\.[a-zA-Z0-9_-]{22,}\.[a-zA-Z0-9_-]{22,}/},{name:"twilio_auth_token",pattern:/TWILIO_AUTH_TOKEN["'=:\s]+[a-f0-9]{32}/},{name:"generic_secret_key",pattern:/[A-Z_]{2,}_SECRET_KEY["'=:\s]+[^\s"']{8,}/},{name:"generic_secret",pattern:/[A-Z_]{2,}_SECRET["'=:\s]+[^\s"']{8,}/},{name:"generic_password",pattern:/[A-Z_]{2,}_PASSWORD["'=:\s]+[^\s"']{6,}/},{name:"generic_private_key_var",pattern:/[A-Z_]{2,}_PRIVATE_KEY["'=:\s]+[^\s"']{8,}/}],I=[],ye=0,be=false;function $t(e){let t=e.slice(0,80);return t.length<=6?"***":t.slice(0,6)+"***"}function jt(e,t,n,r){if(I.some(l=>l.rule===e&&l.source===t))return;let i={rule:e,source:t,hint:$t(n),timestamp:Date.now()};r&&(i.location=r),I.push(i);}function K(e,t,n,r){for(let{name:o,pattern:i}of n){let l=i.exec(e);l&&jt(o,t,l[0],r);}}function Vt(e){try{let t=window;if(t.__NEXT_DATA__){let n=JSON.stringify(t.__NEXT_DATA__);K(n,"hydration",e,"__NEXT_DATA__");}if(t.__NUXT__){let n=JSON.stringify(t.__NUXT__);K(n,"hydration",e,"__NUXT__");}}catch{}}function Xt(e){try{document.querySelectorAll("script:not([src])").forEach((n,r)=>{let o=n.textContent;o&&o.length>0&&K(o,"scripts",e,`inline-script[${r}]`);});}catch{}}function Zt(e){try{document.querySelectorAll("meta[content]").forEach(n=>{let r=n.getAttribute("content"),o=n.getAttribute("name")||n.getAttribute("property")||"";r&&r.length>10&&K(r,"meta",e,o?`meta[${o}]`:void 0);});}catch{}}function Wt(e){try{document.querySelectorAll("[data-api-key], [data-secret], [data-token], [data-password]").forEach(n=>{let r=n.attributes;for(let o=0;o<r.length;o++){let i=r[o];i.name.startsWith("data-")&&i.value.length>10&&K(i.value,"dom",e,`${n.tagName.toLowerCase()}[${i.name}]`);}});}catch{}}function Zn(e={}){if(be||!b()||(be=true,e.secretScan===false))return;let t=[...zt,...e.customPatterns??[]],n=e.scanTargets??["hydration","scripts","meta","dom"];setTimeout(()=>{ye=Date.now(),n.includes("hydration")&&Vt(t),n.includes("scripts")&&Xt(t),n.includes("meta")&&Zt(t),n.includes("dom")&&Wt(t);let r=e.notify??"both";I.length>0&&(r==="console"||r==="both")&&console.warn(`[BlocFeed Security] Found ${I.length} potential secret(s) exposed in client code:`,I.map(o=>`${o.rule} (${o.source}${o.location?`: ${o.location}`:""})`));},100);}function Wn(){return {findings:[...I],scannedAt:ye}}function Kn(){I=[],ye=0,be=false;}
2
- exports.a=b;exports.b=re;exports.c=Pe;exports.d=Le;exports.e=De;exports.f=fe;exports.g=Be;exports.h=ln;exports.i=un;exports.j=yt;exports.k=Et;exports.l=At;exports.m=me;exports.n=On;exports.o=qn;exports.p=zn;exports.q=$n;exports.r=jn;exports.s=Zn;exports.t=Wn;exports.u=Kn;
@@ -1,2 +0,0 @@
1
- function b(){return typeof window<"u"&&typeof document<"u"}function ke(e){let t=globalThis.CSS;return typeof t?.escape=="function"?t.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,n=>{let r=n.codePointAt(0);return r===void 0?"":`\\${r.toString(16)} `})}function re(e){return {x:e.x,y:e.y,width:e.width,height:e.height}}function Ge(e){return {x:e.x+window.scrollX,y:e.y+window.scrollY,width:e.width,height:e.height}}function Je(e){return e.replace(/\s+/g," ").trim()}function oe(e,t=140){let n=e.textContent;if(!n)return;let r=Je(n);if(r)return r.length<=t?r:`${r.slice(0,t-1)}\u2026`}function et(e){let t=1;for(let n=e.previousElementSibling;n;n=n.previousElementSibling)n.tagName===e.tagName&&(t+=1);return t}var Re=["data-testid","data-test-id","data-test","data-qa","data-cy"],Se="data-blocfeed-component";function ie(e){let t=e.closest(`[${Se}]`);if(!t)return;let r=t.getAttribute(Se)?.trim();return r||void 0}function tt(e){for(let t of Re){let n=e.closest(`[${t}]`);if(!n)continue;let o=n.getAttribute(t)?.trim();if(o)return o}}function ve(e){try{let t=e,n=Object.getOwnPropertyNames(t);for(let r of n)if(r.startsWith("__reactFiber$")||r.startsWith("__reactInternalInstance$")){let o=t[r];if(o&&typeof o=="object")return o}}catch{}return null}function B(e){if(e.length<=1||e.length===2&&e[0]===e[0].toLowerCase())return true;let t=e[0];return t>="a"&&t<="z"}function q(e){if(e){for(let t of e)if(typeof t.name=="string"&&t.name&&!B(t.name))return t.name}}function A(e){if(e&&typeof e!="string"){if(typeof e=="function"){let t=e;return typeof t.displayName=="string"&&t.displayName?t.displayName:typeof t.name=="string"&&t.name?t.name:void 0}if(typeof e=="object"){let t=e,n=t.displayName;if(typeof n=="string"&&n)return n;let r=t.render;if(typeof r=="function"){let i=r;if(typeof i.displayName=="string"&&i.displayName)return i.displayName;if(typeof i.name=="string"&&i.name)return i.name}let o=t.type;return A(o)}}}function ae(e){let t=ve(e);if(!t)return;let n=q(t._debugInfo);if(n)return n;let r=t._debugOwner!==void 0;if(r){let s=t._debugOwner;for(let c=0;s&&c<50;c+=1){let h=q(s._debugInfo);if(h)return h;let p=A(s.type)??A(s.elementType);if(p&&!B(p))return p;s=s._debugOwner;}}if(t._owner!==void 0&&t._owner!==t._debugOwner){let s=t._owner;for(let c=0;s&&c<50;c+=1){let h=q(s._debugInfo);if(h)return h;let p=A(s.type)??A(s.elementType);if(p&&!B(p))return p;s=s._owner;}}let i=t,l=r?80:25;for(let s=0;i&&s<l;s+=1){let c=q(i._debugInfo);if(c)return c;let h=A(i.type)??A(i.elementType);if(h&&!B(h))return h;i=i.return;}let a=e.parentElement;for(let s=0;a&&s<15;s+=1){let c=ve(a);if(c){let h=q(c._debugInfo);if(h)return h;let p=A(c.type)??A(c.elementType);if(p&&!B(p))return p;if(c._debugOwner){let m=A(c._debugOwner.type)??A(c._debugOwner.elementType);if(m&&!B(m))return m}if(c._owner&&c._owner!==c._debugOwner){let m=A(c._owner.type)??A(c._owner.elementType);if(m&&!B(m))return m}}a=a.parentElement;}}function nt(e){let t=e.tagName.toLowerCase(),n=e.getAttribute("id");if(n)return `#${ke(n)}`;for(let r of Re){let o=e.getAttribute(r);if(o)return `${t}[${r}="${ke(o)}"]`}return `${t}:nth-of-type(${et(e)})`}function rt(e,t=10){let n=[],r=e;for(;r&&n.length<t;){let o=nt(r);if(n.unshift(o),o.startsWith("#"))break;r=r.parentElement;}return n.join(" > ")}function _e(e,t){if(!t||t.length===0)return false;for(let n of t)if(e.closest(n))return true;return false}function se(e,t){if(!e||_e(e,t.ignoreSelectors))return null;let n=e;for(;n;){if(_e(n,t.ignoreSelectors))return null;if(t.isSelectable?.(n)??ot(n))return n;n=n.parentElement;}return null}function ot(e){let t=e.tagName;return !(t==="HTML"||t==="BODY")}function Ae(e){let t=e.getBoundingClientRect(),n={selector:rt(e),tagName:e.tagName.toLowerCase(),rect:re(t),pageRect:Ge(t)},r=e.getAttribute("id");r&&(n.id=r);let o=e.className;typeof o=="string"&&o.trim()&&(n.className=o);let i=oe(e);i&&(n.textSnippet=i);let l=ie(e)??ae(e);l&&(n.componentName=l);let a=tt(e);return a&&(n.testId=a),n}var ce=null;async function Te(){return ce||(ce=import('html-to-image')),ce}async function it(e){return await new Promise((t,n)=>{let r=new Image;r.onload=()=>t({width:r.naturalWidth,height:r.naturalHeight}),r.onerror=()=>n(new Error("Failed to load generated screenshot")),r.src=e;})}async function xe(e,t){let{width:n,height:r}=await it(e);return {dataUrl:e,mime:t,width:n,height:r}}function O(e){if(e?.aborted)throw new Error("Aborted")}function Pe(){return {async captureElement(e,t){if(!b())throw new Error("captureElement can only run in the browser");O(t.signal);let n=await Te();O(t.signal);let r=t.mime==="image/jpeg"?await n.toJpeg(e,{quality:t.quality??.92,pixelRatio:t.pixelRatio}):await n.toPng(e,{pixelRatio:t.pixelRatio});return O(t.signal),await xe(r,t.mime)},async captureFullPage(e){if(!b())throw new Error("captureFullPage can only run in the browser");O(e.signal);let t=document.documentElement,n=Math.max(t.scrollWidth,t.clientWidth),r=Math.max(t.scrollHeight,t.clientHeight),o=Math.min(1,e.maxDimension/Math.max(n,r)),i=Math.max(1,Math.round(n*o)),l=Math.max(1,Math.round(r*o)),a=await Te();O(e.signal);let s=e.mime==="image/jpeg"?await a.toJpeg(t,{width:i,height:l,quality:e.quality??.92,pixelRatio:e.pixelRatio}):await a.toPng(t,{width:i,height:l,pixelRatio:e.pixelRatio});return O(e.signal),await xe(s,e.mime)}}}function at(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return "Unknown error"}}function w(e,t,n){let r={kind:e,message:at(t)};return n&&(r.detail=n),r}var st=12e3,ct=2048,lt=.92;function Ce(){return Date.now()}function ut(e){return new Promise((t,n)=>{let r=()=>n(new Error("Aborted"));if(e.aborted){r();return}e.addEventListener("abort",r,{once:true});})}async function Fe(e,t,n){let r=new Promise((i,l)=>{let a=setTimeout(()=>l(new Error("Timeout")),t);typeof a.unref=="function"&&a.unref();}),o=[e,r];return n&&o.push(ut(n)),await Promise.race(o)}function dt(e){if(!b())return 1;let t=window.devicePixelRatio||1,n=e?.pixelRatio??Math.min(t,2);return Math.max(.1,n)}function ft(e){return !!(e?.element||e?.fullPage)}function Me(e){let t={mime:e.mime,pixelRatio:e.pixelRatio,maxDimension:e.maxDimension};return e.includeQuality&&(t.quality=e.quality),e.signal&&(t.signal=e.signal),t}async function Le(e){let{selectionElement:t,capture:n,signal:r}=e;if(!b()||!ft(n))return;let o=Ce(),i=[],l=n?.timeoutMs??st,a=n?.maxDimension??ct,s=n?.mime??"image/png",c=n?.quality??lt,h=n?.adapter??Pe(),p={},m=dt(n);if(n?.element&&t)try{let f=t.getBoundingClientRect(),g=Math.min(1,a/Math.max(f.width,f.height)),S=Math.min(m,m*g),_=await Fe(Promise.resolve(h.captureElement(t,{...Me({mime:s,quality:c,pixelRatio:S,maxDimension:a,includeQuality:s==="image/jpeg",...r?{signal:r}:{}})})),l,r);p.element=_;}catch(f){if(r?.aborted)throw f;i.push(w("capture_failed",f,{target:"element"}));}if(n?.fullPage)try{let f=await Fe(Promise.resolve(h.captureFullPage(Me({mime:s,quality:c,pixelRatio:m,maxDimension:a,includeQuality:s==="image/jpeg",...r?{signal:r}:{}}))),l,r);p.fullPage=f;}catch(f){if(r?.aborted)throw f;i.push(w("capture_failed",f,{target:"fullPage"}));}let y=Ce(),u={startedAt:o,finishedAt:y,durationMs:Math.max(0,y-o)};return i.length>0&&(u.errors=i),{...p,diagnostics:u}}function mt(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function pt(){return b()?{url:window.location.href,title:document.title,referrer:document.referrer||void 0,userAgent:navigator.userAgent,language:navigator.language,platform:navigator.platform,viewport:{width:window.innerWidth,height:window.innerHeight},screen:{width:window.screen.width,height:window.screen.height},scroll:{x:window.scrollX,y:window.scrollY},devicePixelRatio:window.devicePixelRatio||1,timezone:mt()}:{}}function gt(e){if(!e)return {};let t={};return e.id&&(t.userId=e.id),e.email&&(t.userEmail=e.email),e.name&&(t.userName=e.name),t}async function De(e){let{config:t,context:n,user:r}=e;if(t?.enabled===false)return {};let o={...pt(),...gt(r)},i=t?.enrich;if(!i)return o;try{let l=await i(n);return {...o,...l}}catch(l){let a=w("unknown",l);return {...o,blocfeedMetadataError:a.message}}}var le="blocfeed-queue",ht=50;function ue(){if(!b())return [];try{let e=localStorage.getItem(le);if(!e)return [];let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return []}}function de(e){if(b())try{e.length===0?localStorage.removeItem(le):localStorage.setItem(le,JSON.stringify(e));}catch{}}function wt(e){let t={...e};if(t.screenshots){let n={...t.screenshots};n.element&&(n.element={...n.element,dataUrl:""}),n.fullPage&&(n.fullPage={...n.fullPage,dataUrl:""}),t.screenshots=n;}return delete t.video,t}function fe(e){let t=ue(),n=wt(e);for(n.metadata={...n.metadata,_queued:true},t.push({payload:n,timestamp:Date.now()});t.length>ht;)t.shift();de(t);}function Be(){let e=ue();return e.length===0?[]:(de([]),e.map(t=>t.payload))}function ln(){de([]);}function un(){return ue().length}var bt=200,z=[],Ie=0,Q=false;function Ne(e){let t=e.target;if(!(t instanceof Element)||t.closest("[data-blocfeed-ui]"))return;let n={timestampMs:Date.now()-Ie,path:window.location.pathname,tagName:t.tagName.toLowerCase()},r=oe(t,100);r&&(n.textSnippet=r);let o=ie(t)??ae(t);o&&(n.componentName=o),z.length<bt&&z.push(n);}function Oe(){Q||!b()||(Q=true,z=[],Ie=Date.now(),document.addEventListener("click",Ne,{capture:true,passive:true}));}function Ue(){Q&&(Q=false,document.removeEventListener("click",Ne,{capture:true}));}function yt(){return [...z]}function Et(){z=[];}var kt=3e4,St=25e5,He="video/webm",vt=250,_t=1e3,Rt=["video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];function qe(){if(typeof MediaRecorder>"u")return null;for(let e of Rt)if(MediaRecorder.isTypeSupported(e))return e;return null}function At(){return !b()||typeof navigator?.mediaDevices?.getDisplayMedia!="function"?false:qe()!==null}async function me(e){let{config:t,signal:n}=e;if(!b()||typeof navigator?.mediaDevices?.getDisplayMedia!="function")throw w("recording_failed",new Error("Screen recording is not supported in this browser"));let r=qe();if(!r)throw w("recording_failed",new Error("No supported video codec found (WebM required)"));if(n?.aborted)throw w("aborted",new Error("Recording aborted before start"));let o;try{o=await navigator.mediaDevices.getDisplayMedia({video:{displaySurface:"browser"},audio:!1});}catch(g){let S=g instanceof DOMException&&g.name==="NotAllowedError"?"Screen share permission denied":"Failed to start screen share";throw w("recording_failed",new Error(S))}if(n?.aborted)throw o.getTracks().forEach(g=>g.stop()),w("aborted",new Error("Recording aborted after permission"));let i=t?.maxDurationMs??kt,l=t?.videoBitsPerSecond??St,a=new MediaRecorder(o,{mimeType:r,videoBitsPerSecond:l}),s=[],c=[],h=0,p=null,m=null,y=false,u=()=>{Ue(),p!==null&&(clearInterval(p),p=null),m!==null&&(clearTimeout(m),m=null),o.getTracks().forEach(g=>g.stop());},f=new Promise((g,S)=>{a.ondataavailable=E=>{E.data.size>0&&s.push(E.data);},a.onstop=()=>{if(y)return;y=true,u();let E=Date.now()-h,x=new Blob(s,{type:He}),M=URL.createObjectURL(x);g({mime:He,blobUrl:M,blob:x,durationMs:E,sizeBytes:x.size});},a.onerror=()=>{y||(y=true,u(),S(w("recording_failed",new Error("MediaRecorder error"))));};let _=o.getVideoTracks()[0];if(_&&_.addEventListener("ended",()=>{a.state!=="inactive"&&a.stop();}),n){let E=()=>{y||(y=true,a.state!=="inactive"&&a.stop(),u(),S(w("aborted",new Error("Recording aborted"))));};n.addEventListener("abort",E,{once:true});}});return a.start(_t),Oe(),h=Date.now(),p=setInterval(()=>{let g=Date.now()-h;for(let S of c)S(g);},vt),m=setTimeout(()=>{!y&&a.state!=="inactive"&&a.stop();},i),{result:f,stop(){!y&&a.state!=="inactive"&&a.stop();},onTick(g){c.push(g);},abort(){y||(y=true,a.state!=="inactive"&&a.stop(),u());}}}function pe(e){let t=null,n=null,r=(...o)=>{n=o,t===null&&(t=requestAnimationFrame(()=>{if(t=null,!n)return;let i=n;n=null,e(...i);}));};return r.cancel=()=>{t!==null&&cancelAnimationFrame(t),t=null,n=null;},r}function Y(e){return e instanceof Element?!!e.closest("[data-blocfeed-ui]"):false}function G(e){e.stopPropagation(),e.stopImmediatePropagation?.();}function ze(e,t){if(!b())throw new Error("BlocFeed picker can only run in a browser environment.");let n=e.ignoreSelectors,r=e.isSelectable,o={};n&&n.length>0&&(o.ignoreSelectors=n),r&&(o.isSelectable=r);let i=null,l=null,a=(u,f=false)=>{if(!u){i=null,l=null,t.onHover(null);return}let g=re(u.getBoundingClientRect()),S=`${Math.round(g.x)}:${Math.round(g.y)}:${Math.round(g.width)}:${Math.round(g.height)}`;!f&&u===i&&S===l||(i=u,l=S,t.onHover({element:u,rect:g}));},s=pe(u=>{if(Y(u.target))return;let f=document.elementFromPoint(u.clientX,u.clientY),g=se(f,o);a(g);}),c=pe(()=>{i&&a(i,true);}),h=u=>{Y(u.target)||(G(u),u.pointerType==="mouse"&&u.preventDefault());},p=u=>{Y(u.target)||(G(u),u.pointerType==="mouse"&&u.preventDefault());},m=u=>{if(Y(u.target))return;G(u),u.preventDefault();let f=document.elementFromPoint(u.clientX,u.clientY),g=se(f,o);g&&t.onSelect({element:g,descriptor:Ae(g)});},y=u=>{u.key==="Escape"&&(G(u),u.preventDefault(),t.onCancel());};return window.addEventListener("pointermove",s,{capture:true,passive:true}),window.addEventListener("pointerdown",h,{capture:true}),window.addEventListener("pointerup",p,{capture:true}),window.addEventListener("click",m,{capture:true}),window.addEventListener("keydown",y,{capture:true}),window.addEventListener("scroll",c,{capture:true,passive:true}),window.addEventListener("resize",c,{passive:true}),{stop(){window.removeEventListener("pointermove",s,{capture:true}),window.removeEventListener("pointerdown",h,{capture:true}),window.removeEventListener("pointerup",p,{capture:true}),window.removeEventListener("click",m,{capture:true}),window.removeEventListener("keydown",y,{capture:true}),window.removeEventListener("scroll",c,{capture:true}),window.removeEventListener("resize",c),s.cancel(),c.cancel(),t.onHover(null);}}}var Tt=12e3,xt=2,Pt=500,Ct=2e3,ge="https://blocfeed.com/api/feedback",$e=0;function je(e,t){return new Promise((n,r)=>{if(t?.aborted){r(new Error("Aborted"));return}let o=setTimeout(n,e),i=()=>{clearTimeout(o),r(new Error("Aborted"));};t?.addEventListener("abort",i,{once:true});})}function Ft(e){return e>=500&&e<=599}function Mt(e){let[t,n]=e.split(",",2);if(!t||!n)throw new Error("Invalid data URL");let o=/data:(.*?);base64/.exec(t)?.[1]||"application/octet-stream",i=atob(n),l=new Uint8Array(i.length);for(let a=0;a<i.length;a+=1)l[a]=i.charCodeAt(a);return new Blob([l],{type:o})}function Lt(e){let t={},n={},r={...e};if(r.screenshots){let o={},i={...r.screenshots};i.element&&(t.element=i.element.dataUrl,o.element={mime:i.element.mime,width:i.element.width,height:i.element.height},i.element={...i.element,dataUrl:""}),i.fullPage&&(t.fullPage=i.fullPage.dataUrl,o.fullPage={mime:i.fullPage.mime,width:i.fullPage.width,height:i.fullPage.height},i.fullPage={...i.fullPage,dataUrl:""}),r.screenshots=i,(o.element||o.fullPage)&&(r.screenshot_intent=o);}return r.video&&(n.blob=r.video.blob,r.video_intent={mime:r.video.mime,durationMs:r.video.durationMs,sizeBytes:r.video.sizeBytes},delete r.video),{lean:r,extracted:t,extractedVideo:n}}async function Ve(e,t,n){let r=Mt(t);await fetch(e,{method:"PUT",body:r,headers:{"content-type":r.type},...n?{signal:n}:{}});}async function Dt(e){let{feedbackId:t,extracted:n,screenshots:r,signal:o}=e,i={};n.element&&r?.element&&(i.element={dataUrl:n.element,mime:r.element.mime,width:r.element.width,height:r.element.height}),n.fullPage&&r?.fullPage&&(i.fullPage={dataUrl:n.fullPage,mime:r.fullPage.mime,width:r.fullPage.width,height:r.fullPage.height}),Object.keys(i).length!==0&&await fetch(`${ge}/${t}/screenshots`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i),...o?{signal:o}:{}});}async function Bt(e){await fetch(`${ge}/${e.feedbackId}/video`,{method:"POST",body:e.blob,headers:{"content-type":e.blob.type},...e.signal?{signal:e.signal}:{}});}async function Xe(e){let{signal:t,transport:n}=e;if(Date.now()-$e<Ct)return {ok:false,error:w("configuration",new Error("Please wait before submitting again"))};let o=n?.timeoutMs??Tt,i=n?.maxAttempts??xt,l=n?.backoffMs??Pt,a=!!(e.payload.screenshots?.element?.dataUrl||e.payload.screenshots?.fullPage?.dataUrl),s=!!e.payload.video?.blob,c=a||s,{lean:h,extracted:p,extractedVideo:m}=c?Lt(e.payload):{lean:e.payload,extracted:{},extractedVideo:{}},y={...p,...e.screenshotDataUrls};for(let u=1;u<=i;u+=1){let f=new AbortController,g=setTimeout(()=>f.abort(),o),S=()=>f.abort();t&&t.addEventListener("abort",S,{once:true});try{let _=await fetch(ge,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(h),signal:f.signal});if(_.ok){$e=Date.now();let E;try{E=await _.json();}catch{}if((y.element||y.fullPage)&&E){let d=E.upload_urls;if(d){let k=[];y.element&&d.element&&k.push(Ve(d.element,y.element,t)),y.fullPage&&d.fullPage&&k.push(Ve(d.fullPage,y.fullPage,t));try{await Promise.all(k);}catch{}}else if(E.feedback_id)try{await Dt({feedbackId:E.feedback_id,extracted:y,screenshots:e.payload.screenshots,...t?{signal:t}:{}});}catch{}}if(m.blob&&E){let d=E.upload_urls;if(d?.video)try{await fetch(d.video,{method:"PUT",body:m.blob,headers:{"content-type":m.blob.type},...t?{signal:t}:{}});}catch{}else if(E.feedback_id)try{await Bt({feedbackId:E.feedback_id,blob:m.blob,...t?{signal:t}:{}});}catch{}}let M={ok:!0,status:_.status};return E&&(M.apiResponse=E),M}if(u<i&&Ft(_.status)){let E=.85+Math.random()*.3,x=Math.round(l*2**(u-1)*E);await je(x,t);continue}return {ok:!1,status:_.status,error:w("api_failed",new Error(`HTTP ${_.status}`))}}catch(_){if(f.signal.aborted||t?.aborted)return {ok:false,error:w("aborted",_)};if(u<i){let E=.85+Math.random()*.3,x=Math.round(l*2**(u-1)*E);await je(x,t);continue}return {ok:false,error:w("api_failed",_)}}finally{clearTimeout(g),t&&t.removeEventListener("abort",S);}}return {ok:false,error:w("api_failed",new Error("Failed"))}}async function he(e){let{signal:t,transport:n}=e,r={ok:false};try{let o={payload:e.payload,...t?{signal:t}:{},...n?{transport:n}:{}};r.api=await Xe(o),r.ok=!!r.api?.ok;}catch(o){r.api={ok:false,error:w("api_failed",o)},r.ok=false;}return {payload:e.payload,result:r}}var It=["[data-blocfeed-ui]","[data-blocfeed-ignore]"];function Nt(e){let t=[...It,...e?.ignoreSelectors??[]],n=Array.from(new Set(t));return {...e,ignoreSelectors:n}}function Ze(){return {phase:"idle"}}function Ot(e){if(e.ok)return false;let t=e.api;return t?t.status&&t.status>=400&&t.status<500||t.error?.kind==="aborted"||t.error?.kind==="configuration"?false:!t.ok:true}function On(e){let t=e,n=Ze(),r=new Set,o=new Set,i=null,l=null,a=null,s=null,c=0,h=null,p=null,m=null,y=()=>{for(let d of r)d(n);},u=d=>{for(let k of o)k(d);},f=d=>{n=d,y();},g=()=>{c+=1,s?.abort(),s=null;},S=()=>{i?.stop(),i=null,u(null),a!==null&&b()&&(document.documentElement.style.cursor=a,a=null);},_=()=>{p&&(p.abort(),p=null),m&&(URL.revokeObjectURL(m.blobUrl),m=null);},E=()=>{g(),S(),_(),l=null,f(Ze());},x=()=>{if(!b())return;S(),l=null;let d=Nt(t.picker);a=document.documentElement.style.cursor,document.documentElement.style.cursor="crosshair",f({phase:"picking"}),i=ze(d,{onHover:u,onSelect:({element:k,descriptor:P})=>{l=k,S(),f({phase:"review",selection:P});},onCancel:()=>{E();}});},M=()=>{let d=Be();if(d.length!==0)for(let k of d)he({payload:k,...t.transport?{transport:t.transport}:{}}).catch(()=>{fe(k);});};if(b()){setTimeout(M,1e3);let d=()=>M();window.addEventListener("online",d),h=()=>window.removeEventListener("online",d);}return {getState:()=>n,subscribe(d){return r.add(d),()=>r.delete(d)},subscribeHover(d){return o.add(d),()=>o.delete(d)},start(){n.phase==="capturing"||n.phase==="submitting"||n.phase==="recording"||n.phase!=="picking"&&x();},stop(){E();},clearSelection(){n.phase==="capturing"||n.phase==="submitting"||n.phase==="recording"||x();},setConfig(d){t=d;},async submit(d,k){if(!b()){let R=w("configuration",new Error("BlocFeed submit can only run in the browser"));return f({phase:"error",lastError:R}),{ok:false}}let P=t.blocfeed_id?.trim?.()??"";if(!P){let L={phase:"error",lastError:w("configuration",new Error("Missing blocfeed_id. Create a project in BlocFeed and pass its blocfeed_id."))};return n.selection&&(L.selection=n.selection),f(L),{ok:false}}if(n.phase==="capturing"||n.phase==="submitting"||n.phase==="recording")return {ok:false};let C=c+1;c=C,s?.abort(),s=new AbortController;let T=s.signal,v=n.selection,U=k?.capture?{...t.capture,...k.capture}:t.capture,H=!!(U?.element||U?.fullPage),Ee={phase:H?"capturing":"submitting"};v&&(Ee.selection=v),f(Ee);try{let R=H?await Le({selectionElement:l,capture:U,signal:T}):void 0;if(T.aborted||c!==C)return {ok:!1};let L={phase:"submitting"};v&&(L.selection=v),R&&(L.capture=R),f(L);let N={};v&&(N.selection=v),R&&(N.capture=R);let Qe=await De({config:t.metadata,context:N,...t.user?{user:t.user}:{}}),D={version:1,createdAt:new Date().toISOString(),blocfeed_id:P,message:d,metadata:Qe};k?.category&&(D.category=k.category),t.user&&(D.user=t.user),v&&(D.selection=v),R&&(D.screenshots=R),m&&(D.video=m);let{result:F}=await he({payload:D,signal:T,...t.transport?{transport:t.transport}:{}});if(T.aborted||c!==C)return F;if(F.ok){m&&(URL.revokeObjectURL(m.blobUrl),m=null);let ne={phase:"success",lastSubmit:F};return v&&(ne.selection=v),R&&(ne.capture=R),f(ne),F}Ot(F)&&fe(D);let Ye=F.api?.error??w("unknown",new Error("Submission failed")),te={phase:"error",lastSubmit:F,lastError:Ye};return v&&(te.selection=v),R&&(te.capture=R),f(te),F}catch(R){if(T.aborted||c!==C)return {ok:false};let N={phase:"error",lastError:T.aborted?w("aborted",R):w("unknown",R)};return v&&(N.selection=v),f(N),{ok:false}}finally{c===C&&(s=null);}},async startRecording(){if(n.phase!=="review"||!t.recording?.enabled)return;let d=n.selection,k={phase:"recording",recordingElapsedMs:0};d&&(k.selection=d),f(k);try{let P={config:t.recording};s&&(P.signal=s.signal);let C=await me(P);p=C,C.onTick(U=>{if(n.phase==="recording"){let H={phase:"recording",recordingElapsedMs:U};d&&(H.selection=d),f(H);}});let T=await C.result;p=null,m=T;let v={phase:"review",video:T};d&&(v.selection=d),f(v);}catch(P){p=null;let T={phase:"review",lastError:P?.kind?P:w("recording_failed",P)};d&&(T.selection=d),f(T);}},stopRecording(){n.phase!=="recording"||!p||p.stop();},removeVideo(){m&&(URL.revokeObjectURL(m.blobUrl),m=null);let d=n.selection,k={phase:"review"};d&&(k.selection=d),f(k);},__unsafeGetSelectedElement(){return l},destroy(){E(),r.clear(),o.clear(),h?.(),h=null;}}}var $=[],j=[],We=20,Ke=15,J=[],V={},X=null,Z=null,W=null,ee=false,Ut=["blocfeed.com","google-analytics.com","googletagmanager.com","analytics.google.com","googleads.g.doubleclick.net","googlesyndication.com","googleadservices.com","google.com/pagead","google.com/ads","facebook.net","facebook.com/tr","connect.facebook.net","graph.facebook.com","api.mixpanel.com","api-js.mixpanel.com","api.amplitude.com","api2.amplitude.com","api.segment.io","cdn.segment.com","vars.hotjar.com","in.hotjar.com","script.hotjar.com","heapanalytics.com","fullstory.com/s/fs.js","rs.fullstory.com","app.posthog.com","us.posthog.com","eu.posthog.com","api-iam.intercom.io","widget.intercom.io","sentry.io/api","browser.sentry-cdn.com","browser-intake-datadoghq.com","clarity.ms","js.hs-analytics.net","api.hubapi.com","forms.hubspot.com","plausible.io/api","client.crisp.chat","js.driftt.com","r.logrocket.com","app.pendo.io","events.launchdarkly.com","app.launchdarkly.com","grammarly.com","gnar.grammarly.com","capi.grammarly.com","api.languagetool.org","api.languagetoolplus.com","fonts.googleapis.com","fonts.gstatic.com","cdn.cookielaw.org","consent.cookiebot.com","js.stripe.com","api.stripe.com/v1/tokens","google.com/recaptcha","hcaptcha.com","bam.nr-data.net","rec.smartlook.com","o2.mouseflow.com","api.luckyorange.com","static.zdassets.com","ekr.zdassets.com"];function Ht(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}function qt(e,t){let n=t.map(Ht).join(" "),r=t.find(i=>i instanceof Error),o={level:e,message:n.slice(0,2e3),timestamp:Date.now()};for(r?.stack&&(o.stack=r.stack.slice(0,2e3)),$.push(o);$.length>We;)$.shift();}function we(e){let t=e.url.toLowerCase();for(let n of J)if(t.includes(n))return;for(j.push(e);j.length>Ke;)j.shift();}function qn(e={}){if(ee||!b())return;ee=true,We=e.consoleLimit??20,Ke=e.networkLimit??15;let t=e.ignoreUrls;if(t!==void 0?J=t.map(n=>n.toLowerCase()):J=[...Ut],e.console!==false){let n=e.consoleLevels??["error","warn"];for(let r of n)V[r]=console[r],console[r]=(...o)=>{qt(r,o),V[r]?.apply(console,o);};}if(e.network!==false&&typeof window.fetch=="function"){X=window.fetch;let n=X;window.fetch=async function(o,i){let l=typeof o=="string"?o:o instanceof URL?o.toString():o.url,a=(i?.method??"GET").toUpperCase(),s=Date.now();try{let c=await n.call(window,o,i);return c.ok||we({url:l.slice(0,500),method:a,status:c.status,statusText:c.statusText,timestamp:s,durationMs:Date.now()-s}),c}catch(c){throw we({url:l.slice(0,500),method:a,status:0,statusText:c instanceof Error?c.message:"Network error",timestamp:s,durationMs:Date.now()-s}),c}};}if(e.network!==false&&typeof XMLHttpRequest<"u"){Z=XMLHttpRequest.prototype.open,W=XMLHttpRequest.prototype.send;let n=Z,r=W;XMLHttpRequest.prototype.open=function(o,i,...l){return this.__bf_method=o.toUpperCase(),this.__bf_url=String(i),n.apply(this,[o,i,...l])},XMLHttpRequest.prototype.send=function(...o){let i=this.__bf_method||"GET",l=this.__bf_url||"",a=Date.now();return this.addEventListener("loadend",function(){if(this.status>=400||this.status===0){let s={url:l.slice(0,500),method:i,status:this.status,timestamp:a,durationMs:Date.now()-a};this.statusText&&(s.statusText=this.statusText),we(s);}}),r.apply(this,o)};}}function zn(){if(ee){for(let[e,t]of Object.entries(V))console[e]=t;for(let e of Object.keys(V))delete V[e];X&&(window.fetch=X,X=null),Z&&(XMLHttpRequest.prototype.open=Z,Z=null),W&&(XMLHttpRequest.prototype.send=W,W=null),J=[],ee=false;}}function $n(){return {consoleLogs:[...$],networkErrors:[...j]}}function jn(){$=[],j=[];}var zt=[{name:"supabase_service_role_key",pattern:/SUPABASE_SERVICE_ROLE_KEY["'=:\s]+[A-Za-z0-9_.=-]{30,}/},{name:"supabase_db_password",pattern:/SUPABASE_DB_PASSWORD["'=:\s]+[^\s"']{6,}/},{name:"postgres_password",pattern:/POSTGRES_PASSWORD["'=:\s]+[^\s"']{6,}/},{name:"database_url_with_creds",pattern:/(?:postgres|postgresql|mysql|mongodb|redis|amqp):\/\/[^:]+:[^@\s"']+@/},{name:"aws_access_key",pattern:/AKIA[0-9A-Z]{16}/},{name:"aws_secret_key",pattern:/AWS_SECRET_ACCESS_KEY["'=:\s]+[A-Za-z0-9/+=]{30,}/},{name:"aws_session_token",pattern:/AWS_SESSION_TOKEN["'=:\s]+[A-Za-z0-9/+=]{30,}/},{name:"stripe_secret_key",pattern:/sk_live_[a-zA-Z0-9]{10,}/},{name:"stripe_secret_key_test",pattern:/sk_test_[a-zA-Z0-9]{10,}/},{name:"stripe_restricted_key",pattern:/rk_(?:live|test)_[a-zA-Z0-9]{10,}/},{name:"github_pat",pattern:/ghp_[A-Za-z0-9_]{36,}/},{name:"github_oauth",pattern:/gho_[A-Za-z0-9_]{36,}/},{name:"github_user_token",pattern:/ghu_[A-Za-z0-9_]{36,}/},{name:"github_server_token",pattern:/ghs_[A-Za-z0-9_]{36,}/},{name:"github_fine_grained",pattern:/github_pat_[A-Za-z0-9_]{22,}/},{name:"openai_api_key",pattern:/sk-[a-zA-Z0-9]{20,}(?![a-zA-Z0-9_])/},{name:"anthropic_api_key",pattern:/sk-ant-[a-zA-Z0-9\-_]{20,}/},{name:"private_key",pattern:/-----BEGIN (?:RSA |EC |DSA |OPENSSH |PGP )?PRIVATE KEY-----/},{name:"sendgrid_api_key",pattern:/SG\.[a-zA-Z0-9_-]{22,}\.[a-zA-Z0-9_-]{22,}/},{name:"twilio_auth_token",pattern:/TWILIO_AUTH_TOKEN["'=:\s]+[a-f0-9]{32}/},{name:"generic_secret_key",pattern:/[A-Z_]{2,}_SECRET_KEY["'=:\s]+[^\s"']{8,}/},{name:"generic_secret",pattern:/[A-Z_]{2,}_SECRET["'=:\s]+[^\s"']{8,}/},{name:"generic_password",pattern:/[A-Z_]{2,}_PASSWORD["'=:\s]+[^\s"']{6,}/},{name:"generic_private_key_var",pattern:/[A-Z_]{2,}_PRIVATE_KEY["'=:\s]+[^\s"']{8,}/}],I=[],ye=0,be=false;function $t(e){let t=e.slice(0,80);return t.length<=6?"***":t.slice(0,6)+"***"}function jt(e,t,n,r){if(I.some(l=>l.rule===e&&l.source===t))return;let i={rule:e,source:t,hint:$t(n),timestamp:Date.now()};r&&(i.location=r),I.push(i);}function K(e,t,n,r){for(let{name:o,pattern:i}of n){let l=i.exec(e);l&&jt(o,t,l[0],r);}}function Vt(e){try{let t=window;if(t.__NEXT_DATA__){let n=JSON.stringify(t.__NEXT_DATA__);K(n,"hydration",e,"__NEXT_DATA__");}if(t.__NUXT__){let n=JSON.stringify(t.__NUXT__);K(n,"hydration",e,"__NUXT__");}}catch{}}function Xt(e){try{document.querySelectorAll("script:not([src])").forEach((n,r)=>{let o=n.textContent;o&&o.length>0&&K(o,"scripts",e,`inline-script[${r}]`);});}catch{}}function Zt(e){try{document.querySelectorAll("meta[content]").forEach(n=>{let r=n.getAttribute("content"),o=n.getAttribute("name")||n.getAttribute("property")||"";r&&r.length>10&&K(r,"meta",e,o?`meta[${o}]`:void 0);});}catch{}}function Wt(e){try{document.querySelectorAll("[data-api-key], [data-secret], [data-token], [data-password]").forEach(n=>{let r=n.attributes;for(let o=0;o<r.length;o++){let i=r[o];i.name.startsWith("data-")&&i.value.length>10&&K(i.value,"dom",e,`${n.tagName.toLowerCase()}[${i.name}]`);}});}catch{}}function Zn(e={}){if(be||!b()||(be=true,e.secretScan===false))return;let t=[...zt,...e.customPatterns??[]],n=e.scanTargets??["hydration","scripts","meta","dom"];setTimeout(()=>{ye=Date.now(),n.includes("hydration")&&Vt(t),n.includes("scripts")&&Xt(t),n.includes("meta")&&Zt(t),n.includes("dom")&&Wt(t);let r=e.notify??"both";I.length>0&&(r==="console"||r==="both")&&console.warn(`[BlocFeed Security] Found ${I.length} potential secret(s) exposed in client code:`,I.map(o=>`${o.rule} (${o.source}${o.location?`: ${o.location}`:""})`));},100);}function Wn(){return {findings:[...I],scannedAt:ye}}function Kn(){I=[],ye=0,be=false;}
2
- export{b as a,re as b,Pe as c,Le as d,De as e,fe as f,Be as g,ln as h,un as i,yt as j,Et as k,At as l,me as m,On as n,qn as o,zn as p,$n as q,jn as r,Zn as s,Wn as t,Kn as u};