1"use strict";(self.webpackChunkfrontend_v1=self.webpackChunkfrontend_v1||[]).push([[1098],{1098:(e,s,t)=>{t.r(s),t.d(s,{default:()=>i});t(9950);var n=t(8544),a=t(4414);const i=e=>(0,a.jsx)(n.A,{...e,mode:"email"})},5886:(e,s,t)=>{t.d(s,{v4:()=>c,lq:()=>l,I8:()=>r,Ay:()=>h});var n=t(9950),a=t(228),i=t(4152),o=t(4414);const r=e=>{let{status:s,title:t,message:n,details:a,actions:r,className:l=""}=e;return(0,o.jsxs)(i.P.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:`tool-result ${s} ${l}`,children:[(0,o.jsxs)("div",{className:"result-header",children:[(0,o.jsx)("span",{className:"result-icon",children:(()=>{switch(s){case"success":return"\u2705";case"warning":return"\u26a0\ufe0f";case"error":return"\u274c";case"info":return"\u2139\ufe0f";default:return"\ud83d\udcca"}})()}),(0,o.jsx)("h4",{className:"result-title",children:t})]}),n&&(0,o.jsx)("p",{className:"result-message",children:n}),a&&(0,o.jsx)("div",{className:"result-details",children:a}),r&&r.length>0&&(0,o.jsx)("div",{className:"result-actions",children:r.map((e,s)=>(0,o.jsxs)("button",{className:`result-action-btn ${e.variant||"primary"}`,onClick:e.onClick,children:[e.icon&&(0,o.jsx)("span",{className:"action-icon",children:e.icon}),e.label]},s))})]})},l=e=>{let{message:s="Processing..."}=e;return(0,o.jsxs)("div",{className:"tool-loading",children:[(0,o.jsx)("div",{className:"loading-spinner"}),(0,o.jsx)("p",{className:"loading-message",children:s})]})},c=e=>{let{error:s,onRetry:t}=e;return(0,o.jsxs)("div",{className:"tool-error",children:[(0,o.jsx)("span",{className:"error-icon",children:"\u274c"}),(0,o.jsx)("p",{className:"error-message",children:s}),t&&(0,o.jsx)("button",{className:"retry-btn",onClick:t,children:"Try Again"})]})},h=e=>{let{toolName:s,toolIcon:t,toolDescription:r,onComplete:l,onClose:c,children:h,className:d="",showHeader:m=!0}=e;const[u,p]=(0,n.useState)(!1),[N,x]=(0,n.useState)(!1);return(0,o.jsx)(a.N,{children:!N&&(0,o.jsxs)(i.P.div,{initial:{opacity:0,y:20,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-20,scale:.95},transition:{duration:.3},className:`chat-tool-container ${d} ${u?"minimized":""}`,children:[m&&(0,o.jsxs)("div",{className:"chat-tool-header",children:[(0,o.jsxs)("div",{className:"tool-info",children:[(0,o.jsx)("span",{className:"tool-icon",children:t}),(0,o.jsxs)("div",{className:"tool-text",children:[(0,o.jsx)("h3",{className:"tool-name",children:s}),(0,o.jsx)("p",{className:"tool-description",children:r})]})]}),(0,o.jsxs)("div",{className:"tool-controls",children:[(0,o.jsx)("button",{className:"tool-control-btn minimize-btn",onClick:()=>p(!u),title:u?"Expand":"Minimize",children:u?"\u25bc":"\u25b2"}),(0,o.jsx)("button",{className:"tool-control-btn close-btn",onClick:()=>{x(!0),setTimeout(()=>{c&&c()},300)},title:"Close tool",children:"\u2715"})]})]}),(0,o.jsx)(a.N,{children:!u&&(0,o.jsx)(i.P.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},className:"chat-tool-content",children:n.cloneElement(h,{onComplete:e=>{l&&l(e),setTimeout(()=>{window.dispatchEvent(new CustomEvent("toolCompleted",{detail:{result:e,toolName:s}}))},100)}})})})]})})}},6250:(e,s,t)=>{t.d(s,{NR:()=>r,R:()=>p,UZ:()=>u,Ut:()=>j,Zq:()=>x,cK:()=>f,mC:()=>N,rg:()=>b,yM:()=>o});var n=t(105),a=t(2720),i=t(7322);const o="NEEDS_SIGN_IN",r="DAILY_LIMIT_REACHED";class l extends Error{constructor(e){let{status:s,code:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(e),this.name="NexsecError",this.status=s,this.code=t}}const c=async e=>{try{return await e.json()}catch{return{}}},h=(e,s)=>401===e.status||403===e.status?new l("Sign in to run this search.",{status:e.status,code:o}):402===e.status||"INSUFFICIENT_CREDITS"===s.code?new l("You\u2019ve used today\u2019s free searches.",{status:e.status,code:r}):new l(s.error||s.message||`Search failed (${e.status})`,{status:e.status,code:s.code});async function d(){const e=(0,i.Cy)(),s=null===e||void 0===e?void 0:e.currentUser;if(!s)throw new l("Sign in to run this search.",{status:401,code:o});return{Authorization:`Bearer ${await s.getIdToken()}`,"Content-Type":"application/json"}}async function m(e){let{method:s="GET",body:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=await fetch((0,n.e9)(`/api/nexsec/search${e}`),{method:s,headers:await d(),...t?{body:JSON.stringify(t)}:{}}),i=await c(a);if(!a.ok)throw h(a,i);return i}async function u(e){const s=await fetch(a.Sn.NEXSEC.EMAIL_START,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e})}),t=await c(s);if(!s.ok)throw h(s,t);return t}async function p(e,s){const t=await fetch(a.Sn.NEXSEC.EMAIL_POLL(e,s)),n=await c(t);if(!t.ok)throw h(t,n);return n}function N(e){return m("/accounts",{method:"POST",body:{username:e}})}function x(e){return m(`/accounts/${encodeURIComponent(e)}`)}function f(e){return m("/breach",{method:"POST",body:{type:"name",term:e}})}
1function j(e,s){return m("/breach",{method:"POST",body:{type:e,term:s}})}function b(e,s){return m("/phone-intel",{method:"POST",body:{countryCode:e,phone:s}})}},8544:(e,s,t)=>{t.d(s,{A:()=>u});var n=t(9950),a=t(2074),i=t(5886),o=t(6250),r=t(3110),l=t(4414);const c="cf_osint_consent",h={email:{toolName:"Email Exposure Scan",toolIcon:"\ud83d\udce8",toolDescription:"See which sites have an account registered to an email address",label:"Email address",placeholder:"[email protected]",type:"email",cta:"Scan this email",needsAccount:!1,blurb:"We check the address against sites that leak whether an account exists. Nothing is sent to those sites on your behalf."},profile:{toolName:"Profile Search",toolIcon:"\ud83d\udc64",toolDescription:"Find public profiles registered to a username",label:"Username",placeholder:"jordanreed",type:"text",cta:"Find profiles",needsAccount:!0,blurb:"Checks hundreds of sites for public profiles using that username."},name:{toolName:"Name Search",toolIcon:"\ud83d\udd0e",toolDescription:"Look for breach records that match a name",label:"Full name",placeholder:"Jordan Reed",type:"text",cta:"Search breaches",needsAccount:!0,limitNote:"Two free name searches a day.",blurb:"Searches known breach records for that name. Names are common, so check the other details on each record before assuming it\u2019s you."}},d=()=>{try{return"true"===localStorage.getItem(c)}catch{return!1}},m=e=>{let{result:s,term:t,onReset:n}=e;if("sites"===s.kind){const{sites:e,breaches:a}=s;return(0,l.jsxs)("div",{className:"osint-result",children:[(0,l.jsx)("h4",{className:"osint-result-title",children:0===e.length?`No accounts found for ${t}`:`${e.length} site${1===e.length?"":"s"} have an account for ${t}`}),0===e.length&&(0,l.jsx)("p",{className:"osint-note",children:"That only means the sites we check didn\u2019t confirm an account. It isn\u2019t proof the address is unused."}),e.length>0&&(0,l.jsx)("ul",{className:"osint-list",children:e.map(e=>(0,l.jsxs)("li",{className:"osint-item",children:[(0,l.jsx)("span",{className:"osint-item-name",children:e.name||e.domain}),e.breach&&(0,l.jsxs)("span",{className:"osint-tag osint-tag-warn",children:[e.breach.title," breach"]})]},e.domain||e.name))}),a.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("h5",{className:"osint-subtitle",children:"Known breaches at those services"}),(0,l.jsx)("ul",{className:"osint-list",children:a.slice(0,10).map(e=>(0,l.jsxs)("li",{className:"osint-item",children:[(0,l.jsx)("span",{className:"osint-item-name",children:e.title||e.name}),e.date&&(0,l.jsx)("span",{className:"osint-tag",children:String(e.date).slice(0,10)})]},e.title||e.name))}),(0,l.jsx)("p",{className:"osint-note",children:"These services were breached \u2014 that doesn\u2019t confirm this address was in the breach."})]}),(0,l.jsx)("button",{type:"button",className:"osint-link",onClick:n,children:"Search another"})]})}if("profiles"===s.kind){const{accounts:e}=s;return(0,l.jsxs)("div",{className:"osint-result",children:[(0,l.jsx)("h4",{className:"osint-result-title",children:0===e.length?`No public profiles found for ${t}`:`${e.length} public profile${1===e.length?"":"s"} for ${t}`}),(0,l.jsx)("ul",{className:"osint-list",children:e.map(e=>(0,l.jsxs)("li",{className:"osint-item",children:[e.url?(0,l.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer nofollow",className:"osint-item-name osint-item-link",children:e.site}):(0,l.jsx)("span",{className:"osint-item-name",children:e.site}),e.breach&&(0,l.jsxs)("span",{className:"osint-tag osint-tag-warn",children:[e.breach.title," breach"]})]},e.site+(e.url||"")))}),(0,l.jsx)("p",{className:"osint-note",children:"Usernames are reused by different people \u2014 open a profile to confirm it\u2019s actually yours before acting on it."}),(0,l.jsx)("button",{type:"button",className:"osint-link",onClick:n,children:"Search another"})]})}const{records:a,available:i,metadataOnly:o}=s;return i?(0,l.jsxs)("div",{className:"osint-result",children:[(0,l.jsx)("h4",{className:"osint-result-title",children:0===a.length?`No breach records match \u201c${t}\u201d`:`${a.length} breach record${1===a.length?"":"s"} match \u201c${t}\u201d`}),o&&(0,l.jsx)("p",{className:"osint-note",children:"These came from an index that doesn\u2019t verify breach membership \u2014 treat them as leads, not confirmation."}),(0,l.jsx)("ul",{className:"osint-list",children:a.slice(0,25).map((e,s)=>(0,l.jsxs)("li",{className:"osint-item osint-item-stacked",children:[(0,l.jsx)("span",{className:"osint-item-name",children:e.source}),(0,l.jsxs)("span",{className:"osint-item-meta",children:[(e.fields||[]).join(", "),e.date?` \xb7 ${String(e.date).slice(0,10)}`:""]})]},`${e.source}-${s}`))}),(0,l.jsx)("p",{className:"osint-note",children:"Plenty of people share a name. Check the other fields on a record before treating it as yours."}),(0,l.jsx)("button",{type:"button",className:"osint-link",onClick:n,children:"Search another"})]}):(0,l.jsxs)("div",{className:"osint-result",children:[(0,l.jsx)("h4",{className:"osint-result-title",children:"Name search isn\u2019t available right now"}),(0,l.jsx)("p",{className:"osint-note",children:"The breach provider isn\u2019t configured on the server, so this would return nothing useful."}),(0,l.jsx)("button",{type:"button",className:"osint-link",onClick:n,children:"Back"})]})},u=e=>{let{mode:s="email",onComplete:t,onClose:u}=e;
1const p=h[s]||h.email,[N,x]=(0,n.useState)(""),[f,j]=(0,n.useState)(d),[b,y]=(0,n.useState)(!1),[g,v]=(0,n.useState)(null),[w,k]=(0,n.useState)(null),S=(0,n.useRef)(!1);(0,n.useEffect)(()=>()=>{S.current=!0},[]);const C=(0,n.useCallback)(async e=>{const s=Date.now()+18e4;for(;;){if(S.current)return null;const t=await e();if("done"===t.status)return t;if("error"===t.status)throw new Error(t.error||"The search failed.");if(Date.now()>s)throw new Error("This is taking longer than usual \u2014 try again in a moment.");await new Promise(e=>setTimeout(e,2500))}},[]),T=()=>{v(null),k(null)};return(0,l.jsx)(i.Ay,{toolName:p.toolName,toolIcon:p.toolIcon,toolDescription:p.toolDescription,onClose:u,className:"osint-tool",children:(0,l.jsxs)("div",{className:"osint-content",children:[!g&&(0,l.jsxs)("form",{onSubmit:async e=>{null===e||void 0===e||e.preventDefault();const n=N.trim();if(n&&!b){y(!0),k(null),v(null);try{let e;if("email"===s){const{uid:s,jobId:t}=await(0,o.UZ)(n),a=await C(()=>(0,o.R)(s,t));if(!a)return;e={kind:"sites",sites:(a.found||[]).filter(e=>e.exists),breaches:a.breaches||[]}}else if("profile"===s){const{jobId:s}=await(0,o.mC)(n),t=await C(()=>(0,o.Zq)(s));if(!t)return;e={kind:"profiles",accounts:t.accounts||[]}}else{const s=await(0,o.cK)(n);e={kind:"breaches",available:!1!==s.available,metadataOnly:!0===s.metadataOnly,records:s.results||[]}}if(S.current)return;v(e),null===t||void 0===t||t({tool:`osint_${s}`,term:n})}catch(a){S.current||k(a)}finally{S.current||y(!1)}}},className:"osint-form",children:[(0,l.jsx)("p",{className:"osint-blurb",children:p.blurb}),(0,l.jsx)("label",{className:"osint-label",htmlFor:`osint-${s}`,children:p.label}),(0,l.jsxs)("div",{className:"osint-row",children:[(0,l.jsx)("input",{id:`osint-${s}`,type:p.type,value:N,onChange:e=>x(e.target.value),placeholder:p.placeholder,className:"osint-input",autoComplete:"off",disabled:b}),(0,l.jsx)("button",{type:"submit",className:"osint-submit",disabled:b||!N.trim()||!f,children:b?"Searching\u2026":p.cta})]}),(0,l.jsxs)("label",{className:"osint-consent",children:[(0,l.jsx)("input",{type:"checkbox",checked:f,onChange:e=>(e=>{j(e);try{localStorage.setItem(c,String(e))}catch{}})(e.target.checked)}),(0,l.jsxs)("span",{children:["These details are mine, or I have permission to look them up.",p.limitNote&&(0,l.jsxs)("em",{className:"osint-limit",children:[" ",p.limitNote]})]})]}),b&&(0,l.jsx)("p",{className:"osint-progress","aria-live":"polite",children:"Running the search \u2014 this usually takes under a minute."})]}),w&&(0,l.jsx)("div",{className:"osint-error",role:"alert",children:w.code===o.yM?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("p",{children:"You need a free account for this one."}),(0,l.jsx)(a.N_,{to:r.i3,className:"osint-link",children:"Create a free account \u2192"})]}):w.code===o.NR?(0,l.jsx)("p",{children:"You\u2019ve used today\u2019s free name searches. They reset tomorrow \u2014 the email scan and profile search stay unlimited."}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("p",{children:w.message}),(0,l.jsx)("button",{type:"button",className:"osint-link",onClick:T,children:"Try again"})]})}),g&&(0,l.jsx)(m,{result:g,term:N,onReset:T})]})})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.