messages-dmRh7vWf.js

37.1 KB · raw

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sync-kQd3KSmO.js","assets/chunk-CilyBKbf.js","assets/sync-storage-DsbiOwL6.js","assets/storage-COHREhIV.js","assets/preload-helper-D4M6sveU.js","assets/dist-C5po-C0e.js","assets/sync-lifecycle-DYhtP6JP.js","assets/vault-DyfumTNT.js","assets/index-J2S54SZa.js","assets/index-Ci9pf2DC.css","assets/license-ZF1DwcYD.js","assets/pairing-server-state-TxS-duki.js","assets/sync-wire-O_oTp2Oy.js","assets/sync-coordinator-UN59hhzc.js","assets/android-sync-identity-BAhJ8ODd.js","assets/x25519-DSi3mQjw.js","assets/capacitor-pairing-handshake-BGdkGDOJ.js"])))=>i.map(i=>d[i]);2import{t as e}from"./dist-C5po-C0e.js";import{t}from"./preload-helper-D4M6sveU.js";import{t as n}from"./storage-COHREhIV.js";import{C as r,O as i,S as a,b as o,l as s,o as c,s as l,v as u,w as d,x as f,y as p}from"./index-J2S54SZa.js";import{activateLicense as m,deactivateLicense as h,getLicenseInfo as g,getLicenseKey as _,isProUser as v,markCelebrationPlayed as ee,shouldPlayCelebration as te}from"./license-ZF1DwcYD.js";import{A as ne,C as y,D as b,E as re,F as x,I as ie,L as S,N as ae,O as oe,P as C,R as se,S as ce,T as le,_ as ue,a as de,b as fe,c as pe,d as w,f as me,g as T,h as E,i as D,j as he,k as ge,l as _e,m as ve,n as ye,o as be,p as O,r as xe,s as Se,t as k,u as Ce,v as A,w as j,x as we,y as Te}from"./vault-DyfumTNT.js";import{onVaultLocked as Ee,onVaultUnlocked as M}from"./sync-lifecycle-DYhtP6JP.js";var De=30,N=null;async function P(e){try{let[t]=await chrome.tabs.query({active:!0,currentWindow:!0});if(t?.id){await chrome.scripting.executeScript({target:{tabId:t.id},func:e=>navigator.clipboard.writeText(e),args:[e]});return}}catch{}await navigator.clipboard.writeText(e)}async function Oe(e,t,n=!1){N&&=(clearTimeout(N),null),n||await P(e);let r=A().clipboardClearSeconds,i=(typeof r==`number`&&r>0?r:De)*1e3;N=setTimeout(async()=>{try{await P(``)}catch{}N=null},i)}var F=(()=>{let e=typeof chrome<`u`?chrome:void 0;if(e?.webAuthenticationProxy)return!1;try{return(e?.runtime?.getURL?.(``)??``).startsWith(`moz-extension://`)}catch{return!1}})(),I=`passkey_pending_`,ke=6e4,L=!1,R;__PEACH_E2E_PASSKEYS__;var z=new Map;function B(){if(typeof chrome.webAuthenticationProxy?.attach==`function`)return!0;if(c()===`firefox`){let e=l();if(Number.isFinite(e)&&e>=150)return!0}return!1}function Ae(){let e=navigator.userAgent;if(/Firefox\/(\d+)/.test(e)){let t=e.match(/Firefox\/(\d+)/)?.[1];return t?`Firefox ${t}`:`Firefox`}let t=e.match(/Chrome\/(\d+)/)?.[1];return t?`Chrome ${t}`:`Chromium`}function V(e){return`${I}${e}`}async function H(e){chrome.action?.setBadgeText&&(await chrome.action.setBadgeText({text:e}),e&&await chrome.action.setBadgeBackgroundColor({color:`#D96830`}))}async function U(e){chrome.storage.session&&await chrome.storage.session.remove(V(e)),await H(``)}async function W(){try{await chrome.action.openPopup()}catch{await H(`PK`)}}async function je(){if(!chrome.storage.session)return null;let e=await chrome.storage.session.get(null),t=Object.keys(e).find(e=>e.startsWith(I));if(!t)return null;let n=e[t];return n&&typeof n==`object`?n:null}async function G(e,t){let n=z.get(e);if(!n){await U(e),chrome.storage.session&&await chrome.storage.session.remove(Y);return}clearTimeout(n.timeoutId),z.delete(e),await U(e),n.resolve(t)}async function Me(e){return chrome.storage.session&&await chrome.storage.session.set({[V(e.requestId)]:e}),await W(),new Promise(t=>{let n=setTimeout(async()=>{z.delete(e.requestId),await U(e.requestId),t(!1)},ke);z.set(e.requestId,{resolve:t,timeoutId:n})})}async function K(){let e=await O(),t=B(),n=e.passkeyProviderEnabled===!0;return{supported:t,enabled:n,attached:t&&L,browserLabel:Ae(),statusLabel:t?L?`Active`:R?`Another provider is active`:n?`Inactive`:`Disabled`:`Interception unavailable`,conflict:R}}async function Ne(){if(!B()){L=!1,R=`This browser does not expose chrome.webAuthenticationProxy.`;return}if(c()===`firefox`){L=!0,R=void 0;return}if(!L)try{await chrome.webAuthenticationProxy.attach(),L=!0,R=void 0}catch(e){L=!1,R=e instanceof Error?e.message:`Another provider is active.`}}async function Pe(){if(!B()){L=!1;return}if(c()===`firefox`){L=!1,R=void 0;return}try{await chrome.webAuthenticationProxy.detach()}catch{}L=!1,R=void 0}async function Fe(e){return await x({passkeyProviderEnabled:e}),e?await Ne():await Pe(),K()}function q(e){let t=E().find(t=>t.passkey?.rpId===e&&!t.deletedAt);if(t)return t;let n=b(e).filter(e=>e.type===`login`&&!e.passkey);return n.length===0?null:n.reduce((e,t)=>(t.modifiedAt??0)>(e.modifiedAt??0)?t:e)}function J(){chrome.tabs.query({},e=>{for(let t of e)t.id!==void 0&&chrome.tabs.sendMessage(t.id,{type:`PASSKEY_PRO_GATE`}).catch(()=>{})})}var Y=`passkey_pending_firefox`,Ie=`peach_passkey_offer_declined:`,Le=720*60*60*1e3;async function Re(e){if(!await v())return J(),{ok:!1,error:`passkey creation requires Peach Pro`};if(!y())return await W(),{ok:!1,error:`vault locked`};if(!chrome.storage.session)return{ok:!1,error:`session storage unavailable`};let t=Date.now(),n=u(crypto.getRandomValues(new Uint8Array(32))),r=u(crypto.getRandomValues(new Uint8Array(32))),i={requestId:t,type:`create`,rpId:e.rpId,rpName:e.rpName,userName:e.userName,userDisplayName:e.userDisplayName,browser:`firefox`,challenge:n,userHandle:r};return await chrome.storage.session.set({[Y]:i}),await W(),{ok:!0}}async function ze(e){if(!y())return{ok:!1,error:`vault locked`};let t={rpId:e.rpId,rpName:e.rpName,credentialId:e.credentialId,publicKeyCose:e.publicKeyCose,userHandle:e.userHandle,userName:e.userName,userDisplayName:e.userDisplayName??e.userName,algorithm:e.algorithm,signCount:0,aaguid:e.aaguid??u(new Uint8Array(16)),backupEligible:e.backupEligible??!1,backupState:e.backupState??!1,browser:`firefox`,transports:e.transports??[`internal`],createdAt:Date.now()},n=q(e.rpId);return n?await C(n.id,{passkey:t}):await k({type:`login`,title:e.rpName||e.rpId,url:`https://${e.rpId}`,username:e.userName,passkey:t}),chrome.storage.session&&await chrome.storage.session.remove(Y),{ok:!0}}function Be(e){return`${Ie}${e}`}async function Ve(e){e&&await chrome.storage.local.set({[Be(e)]:Date.now()})}async function He(e){if(!e)return!1;let t=Be(e),n=(await chrome.storage.local.get(t))[t];return typeof n==`number`?Date.now()-n>Le?(await chrome.storage.local.remove(t),!1):!0:!1}function Ue(){return E().filter(e=>e.passkey!==void 0&&!e.deletedAt)}async function We(e){if(!F)return{ok:!1,error:`not_applicable`};if(!y())return{ok:!0,hasCredentials:!1};let t=Ue().filter(t=>t.passkey.rpId===e.rpId);if(t.length===0)return{ok:!0,hasCredentials:!1};let n=e.allowCredentials??[];return n.length===0?{ok:!0,hasCredentials:!0}:{ok:!0,hasCredentials:t.some(e=>n.some(t=>t.id===e.passkey.credentialId))}}async function Ge(e){return Me({requestId:Date.now()+Math.floor(Math.random()*1e3),type:e.type,rpId:e.rpId,rpName:e.rpName??e.rpId,userName:e.userName,userDisplayName:e.userDisplayName})}async function Ke(e){if(!F)return{ok:!1,error:`not_applicable`};if(!await v())return J(),{ok:!1,error:`pro_required`};if(!y())return await W(),{ok:!1,error:`vault_locked`};let t=r(e.pubKeyCredParams??[]);if(!t)return{ok:!1,error:`internal_error`,message:`No supported algorithm offered`};if(!await Ge({type:`create`,rpId:e.rpId,rpName:e.rpName,userName:e.userName,userDisplayName:e.userDisplayName}))return{ok:!1,error:`user_cancelled`};let{bytes:n,base64url:i}=f(),{publicKeyCose:s,publicKeySpki:c,privateKeyJwk:l}=await a(t),d=await p({rpId:e.rpId,flags:69,signCount:0,credentialId:n,publicKeyCose:s}),m=o(d),h={rpId:e.rpId,rpName:e.rpName??e.rpId,credentialId:i,publicKeyCose:u(s),privateKeyJwk:l,userHandle:e.userId,userName:e.userName,userDisplayName:e.userDisplayName??e.userName,algorithm:t,signCount:0,aaguid:u(new Uint8Array(16)),backupEligible:!1,backupState:!1,browser:`firefox`,transports:[`internal`],createdAt:Date.now()},g=q(e.rpId);return g?await C(g.id,{passkey:h}):await k({type:`login`,title:e.rpName||e.rpId,url:`https://${e.rpId}`,username:e.userName,passkey:h}),{ok:!0,credential:{type:`create`,id:i,clientDataJSON:e.clientDataJSON,attestationObject:u(m),authenticatorData:u(d),publicKey:u(c),algorithm:t}}}async function qe(e){if(!F)return{ok:!1,error:`not_applicable`};if(!await v())return J(),{ok:!1,error:`pro_required`};if(!y())return await W(),{ok:!1,error:`vault_locked`};let t=e.allowCredentials??[],n=Ue().filter(n=>n.passkey.rpId===e.rpId?t.length===0?!0:t.some(e=>e.id===n.passkey.credentialId):!1);if(n.length===0)return{ok:!1,error:`no_credentials`};n.sort((e,t)=>(t.passkey.lastUsedAt??0)-(e.passkey.lastUsedAt??0));let r=n[0],i=r.passkey;if(!i.privateKeyJwk)return{ok:!1,error:`no_credentials`};if(!await Ge({type:`get`,rpId:i.rpId,rpName:i.rpName,userName:i.userName,userDisplayName:i.userDisplayName}))return{ok:!1,error:`user_cancelled`};let a=i.signCount+1,o=5|(i.backupEligible?8:0)|(i.backupState?16:0),s=await p({rpId:i.rpId,flags:o,signCount:a}),c=new Uint8Array(e.clientDataJSON),l=new Uint8Array(await crypto.subtle.digest(`SHA-256`,c)),f=await d(i.privateKeyJwk,i.algorithm,s,l);return await C(r.id,{passkey:{...i,signCount:a,lastUsedAt:Date.now()}}),{ok:!0,credential:{type:`get`,id:i.credentialId,clientDataJSON:e.clientDataJSON,authenticatorData:u(s),signature:u(f),userHandle:i.userHandle}}}var Je=/bank|pay|finance|invest|mail|gmail|outlook|yahoo|icloud|instagram|twitter|facebook|linkedin/i,Ye=2160*60*60*1e3,Xe=4320*60*60*1e3,Ze=60,Qe=25,$e=15,et=20,tt=10;async function nt(e){let t=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e));return Array.from(new Uint8Array(t)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function rt(e){return Je.test(e)}function it(e){return rt(e)?Ye:Xe}function at(e){if(e.length<10)return!0;let t=0;return/[a-z]/.test(e)&&(t+=1),/[A-Z]/.test(e)&&(t+=1),/[0-9]/.test(e)&&(t+=1),/[^A-Za-z0-9]/.test(e)&&(t+=1),t<3}async function ot(e){let t=Date.now(),n=e.filter(e=>!e.deletedAt&&(e.type===void 0||e.type===`login`)),r=new Map;for(let e of n){if(!e.password)continue;let t=await nt(e.password),n=r.get(t)??[];n.push(e.id),r.set(t,n)}let i=new Set,a=0;for(let e of r.values())if(e.length>1){a+=1;for(let t of e)i.add(t)}let o=[],c=0,l=0,u=0;for(let e of n){let n=s(e.url??``)??``,r=n?rt(n):!1,a=t-(e.passwordChangedAt??e.createdAt??t),d=e.password?a>it(n):!1;d&&(c+=1);let f=(e.breach??0)>0,p=i.has(e.id),m=e.password?at(e.password):!1,h=r&&!e.totp,g=0;f&&(g+=Ze),p&&(g+=Qe),d&&(g+=$e),m&&(g+=et),h&&(g+=tt),g>100&&(g=100);let _=[];if(f&&_.push(`Breached (${e.breach} exposures)`),p&&_.push(`Reused`),d){let e=Math.floor(a/864e5);_.push(`${e} days old`)}m&&_.push(`Weak`),h&&_.push(`No 2FA on sensitive site`);let v=r?2:1;l+=g*v,u+=v,g>0&&o.push({id:e.id,title:e.title,domain:n,url:e.url,score:g,ageDays:Math.floor(a/864e5),reasons:_,factors:{breached:f,breachCount:e.breach??0,reused:p,aged:d,weak:m,missingTotpOnSensitive:h}})}return o.sort((e,t)=>t.score-e.score),{vaultScore:u>0?Math.round(l/u):0,generatedAt:t,entryCount:n.length,reusedGroups:a,agedCount:c,remediation:o}}function st(e){let t=e.url??``,n=s(t);if(!n)return null;for(let[e,t]of Object.entries({"google.com":`https://myaccount.google.com/security`,"gmail.com":`https://myaccount.google.com/security`,"github.com":`https://github.com/settings/security`,"twitter.com":`https://twitter.com/settings/password`,"x.com":`https://x.com/settings/password`,"facebook.com":`https://www.facebook.com/settings?tab=security`,"instagram.com":`https://www.instagram.com/accounts/password/change/`,"linkedin.com":`https://www.linkedin.com/psettings/change-password`,"amazon.com":`https://www.amazon.com/ap/changepassword`,"apple.com":`https://appleid.apple.com`,"icloud.com":`https://appleid.apple.com`,"microsoft.com":`https://account.microsoft.com/security`,"outlook.com":`https://account.microsoft.com/security`,"live.com":`https://account.microsoft.com/security`,"dropbox.com":`https://www.dropbox.com/account/security`,"netflix.com":`https://www.netflix.com/password`,"spotify.com":`https://www.spotify.com/account/change-password/`,"reddit.com":`https://www.reddit.com/settings/account`}))if(n===e||n.endsWith(`.`+e))return t;try{return`${new URL(t).origin}/account/security`}catch{return null}}async function X(t,n=`user`){return await v()?{allowed:!0}:(n===`user`?e.isNativePlatform()||chrome.runtime.sendMessage({type:`PRO_GATE_TRIGGERED`,payload:{feature:t}}).catch(()=>{}):!e.isNativePlatform()&&chrome.storage.session&&chrome.storage.session.set({pendingProNotice:{feature:t,triggeredAt:Date.now()}}).catch(()=>{}),{allowed:!1})}var ct=`peach_device_name`;async function Z(){try{let e=(await chrome.storage.local.get(ct))[ct];if(typeof e==`string`&&e.trim())return e.trim()}catch{}return e.getPlatform()===`android`?`Peach Android`:e.getPlatform()===`ios`?`Peach iOS`:`Peach`}var lt=300*1e3;function ut(){let e=new Uint32Array(1);return crypto.getRandomValues(e),(e[0]%1e6).toString().padStart(6,`0`)}var Q=[];async function dt(){await ft();let n=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{getPairedDevices:r}=await t(async()=>{let{getPairedDevices:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getPairedDevices:e}},__vite__mapDeps([2,1]));n.connectSyncHost(),Q=[n.onPeerDiscovered(t=>{(async()=>{let n=(await r()).some(e=>e.deviceId===t.deviceId);e.isNativePlatform()||chrome.runtime.sendMessage({type:`SYNC_PEER_DISCOVERED`,peer:{deviceId:t.deviceId,deviceName:t.name,host:t.host,port:t.port,wsPort:t.wsPort,x25519PublicKey:t.x25519PublicKey,alreadyPaired:n}}).catch(()=>{})})()}),n.onPeerLost(t=>{e.isNativePlatform()||chrome.runtime.sendMessage({type:`SYNC_PEER_LOST`,deviceId:t}).catch(()=>{})})],n.discoverPeers()}async function ft(){for(let e of Q)e();Q=[];try{let e=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1]));e.isHostConnected()&&await e.stopDiscovery()}catch{}}var pt=[{prefix:`10.`},{prefix:`127.`},{prefix:`169.254.`},{prefix:`192.168.`}];async function mt(r,a={}){try{if(!e.isNativePlatform()&&a.id!==void 0&&a.id!==chrome.runtime.id)return{ok:!1,error:`invalid sender`};switch(ht(r.type)&&y()&&se(),r.type){case`CREATE_VAULT`:{let{password:e}=r.payload;return await pe(e),await S(),$({type:`VAULT_UNLOCKED`}),M(),{ok:!0}}case`UNLOCK`:{let{password:e}=r.payload,t=await ae(e);return t&&(await S(),$({type:`VAULT_UNLOCKED`}),M()),{ok:t}}case`LOCK`:return j(),Ee(),{ok:!0};case`IS_UNLOCKED`:return{ok:!0,data:y()};case`GET_VAULT_STATUS`:return{ok:!0,unlocked:y()};case`HAS_VAULT`:return{ok:!0,data:await fe()};case`GET_ENTRIES`:return{ok:!0,data:E()};case`ADD_ENTRY`:return y()?{ok:!0,data:await k(r.payload)}:{ok:!1,error:`vault locked`};case`BATCH_ADD_ENTRIES`:{let{entries:e}=r.payload;return{ok:!0,data:await ye(e)}}case`RESTORE_ENTRIES`:{let{entries:e,mode:t,settings:n}=r.payload,i=await oe(e,t);return n&&typeof n==`object`&&await x(n),{ok:!0,data:i}}case`CLEAR_VAULT_ENTRIES`:return await de(`REPLACE_ALL`),{ok:!0};case`GET_VAULT_HISTORY`:return{ok:!0,data:await Te()};case`RESTORE_VAULT_SNAPSHOT`:{let{snapshotId:e}=r.payload,t=await ne(e);return t.ok?($({type:`VAULT_LOCKED`}),{ok:!0}):{ok:!1,error:t.error}}case`COUNT_DUPLICATES`:return{ok:!0,data:Se()};case`DEDUPLICATE_ENTRIES`:return{ok:!0,data:await Ce()};case`UPDATE_ENTRY`:{let{id:e,patch:t}=r.payload;return await C(e,t),{ok:!0}}case`ADD_ADDITIONAL_URL`:{let{id:e,url:t}=r.payload,n=typeof t==`string`?t.trim():``;if(!n)return{ok:!1,error:`url required`};let i=T(e);return i?i.type===`login`?(await C(e,{additionalUrls:[...i.additionalUrls??[],n]}),{ok:!0}):{ok:!1,error:`login entries only`}:{ok:!1,error:`entry not found`}}case`DELETE_ENTRY`:{let{id:e}=r.payload;return await w(e),{ok:!0}}case`GET_DELETED_ENTRIES`:return{ok:!0,data:ve()};case`RESTORE_ENTRY`:{let{id:e}=r.payload;return await ge(e),{ok:!0}}case`PURGE_ENTRY`:{let{id:e}=r.payload;return await le(e),{ok:!0}}case`PURGE_EXPIRED_TRASH`:{let{retentionMs:e}=r.payload;return{ok:!0,data:await re(e)}}case`AUTOFILL_QUERY`:{if(!y())return{ok:!1,error:`VAULT_LOCKED`};let{domain:e,includeAll:t,kind:n}=r.payload;return n===`card`?{ok:!0,data:E().filter(e=>e.type===`card`).map(e=>({id:e.id,title:e.cardNickname||e.title,cardholderName:e.cardholderName,last4:e.last4,expMonth:e.expMonth,expYear:e.expYear,network:e.network}))}:{ok:!0,data:(t?E().filter(e=>e.type!==`note`&&e.type!==`card`):b(e)).filter(e=>!i(e)).map(e=>t?{id:e.id,title:e.title,hasPasskey:e.passkey!==void 0}:{id:e.id,title:e.title,username:e.username,url:e.url,hasTotp:!!e.totp,hasPasskey:e.passkey!==void 0})}}case`GET_ENTRY_FOR_FILL`:{if(!y())return{ok:!1,error:`vault locked`};let{id:e}=r.payload,t=T(e);if(!t)return{ok:!1,error:`entry not found`};if(i(t))return{ok:!1,error:`passkey not fillable`};let{passkey:n,...a}=t;return{ok:!0,data:a}}case`COPY`:{let{text:e,label:t,alreadyWritten:n}=r.payload;return await Oe(e,t,!!n),{ok:!0}}case`CHECK_BREACH`:{let{password:e}=r.payload;return{ok:!0,data:await D(e)}}case`CHECK_ALL_BREACHES`:{let e=E(),t={};for(let n of e)n.type!==`note`&&n.password&&(t[n.id]=await D(n.password),await new Promise(e=>setTimeout(e,200)));for(let[e,n]of Object.entries(t)){let t=T(e);t&&(t.breach??0)!==n&&await C(e,{breach:n>0?n:void 0})}return{ok:!0,data:t}}case`GET_SETTINGS`:return{ok:!0,data:await O()};case`UPDATE_SETTINGS`:{let e=r.payload;return await x(e),typeof e.autoLockMinutes==`number`&&(await S(),y()&&se()),{ok:!0}}case`GET_PENDING_PASSKEY`:return{ok:!0,data:await je()};case`APPROVE_PASSKEY`:{let{requestId:e}=r.payload;return await G(e,!0),{ok:!0}}case`DENY_PASSKEY`:{let{requestId:e}=r.payload;return await G(e,!1),{ok:!0}}case`GET_PASSKEYS`:return{ok:!0,data:E().filter(e=>e.passkey!==void 0)};case`DELETE_PASSKEY`:{let{id:e}=r.payload;return await w(e),{ok:!0}}case`GET_PASSKEY_PROVIDER_STATE`:return{ok:!0,data:await K()};case`SET_PASSKEY_PROVIDER_ENABLED`:{let{enabled:e}=r.payload;return e&&!(await X(`passkeys`)).allowed?{ok:!1,error:`pro_required`}:{ok:!0,data:await Fe(e)}}case`FIRE_CANARY_PING`:{let{webhookUrl:e,entryTitle:t,trigger:n}=r.payload;if(!gt(e))return{ok:!1,error:`invalid webhook url`};let i=JSON.stringify({event:n===`test`?`peach_canary_test`:`peach_canary_accessed`,entry:t,trigger:n,timestamp:new Date().toISOString(),source:`peach-extension`});if(n===`test`)try{let t=await fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:i});return{ok:t.ok,error:t.ok?void 0:`HTTP ${t.status}`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`network error`}}return fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:i}).catch(()=>{}),{ok:!0}}case`ACTIVATE_LICENSE`:{let{key:e}=r.payload;return{ok:!0,data:await m(e)}}case`GET_LICENSE`:return{ok:!0,data:await g()};case`GET_LICENSE_KEY`:return{ok:!0,data:await _()};case`DEACTIVATE_LICENSE`:return await h(),{ok:!0};case`SHOULD_PLAY_CELEBRATION`:return{ok:!0,data:await te()};case`MARK_CELEBRATION_PLAYED`:return await ee(),{ok:!0};case`OPEN_PRO_GATE`:{let{feature:e}=r.payload??{};chrome.storage.session&&await chrome.storage.session.set({pendingProGate:{feature:e??`passkeys`}});try{await chrome.action.openPopup()}catch{}return{ok:!0}}case`GET_IDENTITIES`:return y()?{ok:!0,data:ue()}:{ok:!1,error:`vault locked`};case`GET_ADVANCED_HEALTH_REPORT`:return(await X(`advanced_health`)).allowed?y()?{ok:!0,data:await ot(E())}:{ok:!1,error:`vault locked`}:{ok:!1,error:`pro_required`};case`INITIATE_PASSWORD_CHANGE`:{if(!(await X(`smart_password_change`)).allowed)return{ok:!1,error:`pro_required`};if(!y())return{ok:!1,error:`vault locked`};let{id:e}=r.payload,t=T(e);if(!t)return{ok:!1,error:`entry not found`};let n=st(t);if(!n)return{ok:!1,error:`no reset url`};try{return await chrome.tabs.create({url:n}),{ok:!0,data:{url:n}}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`failed to open tab`}}}case`IS_DURESS_ENABLED`:return{ok:!0,data:await ce()};case`SETUP_DURESS`:{let{duressPassword:e}=r.payload;return await he(e),{ok:!0}}case`DISABLE_DURESS`:return await me(),{ok:!0};case`VERIFY_MAIN_PASSWORD`:{let{password:e}=r.payload;return{ok:!0,data:await ie(e)}}case`CHANGE_PASSWORD`:{let{currentPassword:e,newPassword:t}=r.payload;return await xe(e,t)?{ok:!0}:{ok:!1,error:`incorrect current password`}}case`GET_SITE_PASSWORD_POLICY`:{let[e]=await chrome.tabs.query({active:!0,currentWindow:!0});if(!e?.id)return{ok:!0,data:null};try{return await chrome.tabs.sendMessage(e.id,{type:`GET_SITE_PASSWORD_POLICY`})??{ok:!0,data:null}}catch{return{ok:!0,data:null}}}case`GET_SYNC_STATE`:{let{getPairedDevices:e,getTrustedNetworks:n}=await t(async()=>{let{getPairedDevices:e,getTrustedNetworks:t}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getPairedDevices:e,getTrustedNetworks:t}},__vite__mapDeps([2,1])),{isOnTailscale:r}=await t(async()=>{let{isOnTailscale:e}=await import(`./sync-network-JnKjAtqt.js`);return{isOnTailscale:e}},[]),{isProUser:i}=await t(async()=>{let{isProUser:e}=await import(`./license-ZF1DwcYD.js`);return{isProUser:e}},[]),{storageGet:a}=await t(async()=>{let{storageGet:e}=await import(`./storage-COHREhIV.js`).then(e=>e.i);return{storageGet:e}},__vite__mapDeps([3,1,4,5])),o=await e(),s=await n(),c=await r(),l=await i(),u=`offline`;u=c||s.some(e=>!e.isTailscale)?o.length===0?`no_peers`:`synced`:`not_trusted`;let d=await a(`peach_last_sync_at`),f=d?Number.parseInt(d,10):NaN;return{ok:!0,data:{pairedDevices:o,trustedNetworks:s,status:u,lastSyncAt:Number.isFinite(f)?f:void 0,isPro:l}}}case`TRIGGER_SYNC`:{if(!(await X(`sync`)).allowed)return{ok:!1,error:`pro_required`};if(!y())return{ok:!1,error:`vault_locked`};let{getPairedDevices:e,updatePairedDevice:n}=await t(async()=>{let{getPairedDevices:e,updatePairedDevice:t}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getPairedDevices:e,updatePairedDevice:t}},__vite__mapDeps([2,1])),r=await e();if(r.length===0)return{ok:!1,error:`no_paired_devices`};let i=await t(()=>import(`./sync-lifecycle-DYhtP6JP.js`),__vite__mapDeps([6,4,5,1,7,8,3,9,10,11,2,0,12])),a=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{storageGet:o,storageSet:s}=await t(async()=>{let{storageGet:e,storageSet:t}=await import(`./storage-COHREhIV.js`).then(e=>e.i);return{storageGet:e,storageSet:t}},__vite__mapDeps([3,1,4,5])),{createNativeSyncTransport:c,runBlobSyncSession:l}=await t(async()=>{let{createNativeSyncTransport:e,runBlobSyncSession:t}=await import(`./sync-coordinator-UN59hhzc.js`);return{createNativeSyncTransport:e,runBlobSyncSession:t}},__vite__mapDeps([13,4,3,1,5,7,8,9,12])),u=i.getDiscoveredPeerCache(),d=r.filter(e=>u.some(t=>t.x25519PublicKey===e.x25519PublicKey));if(d.length===0)return{ok:!1,error:`no_devices_reachable`};let f=[];for(let e of d){let t=u.find(t=>t.x25519PublicKey===e.x25519PublicKey);try{let r=await l(`initiator`,await c(await a.connectToPeer(t.host,t.port,t.x25519PublicKey)),{isPro:async()=>!0,isUnlocked:()=>y(),getVaultBlobs:async()=>({vault_a:await o(`peach_vault_a`)??``,vault_b:await o(`peach_vault_b`)??``})});f.push({deviceName:e.displayName,status:r.status,error:r.error}),r.status===`completed`&&await n(e.deviceId,{lastSeenAt:Date.now(),lastSyncAt:Date.now()})}catch(t){f.push({deviceName:e.displayName,status:`errored`,error:t instanceof Error?t.message:String(t)})}}return await s(`peach_last_sync_at`,String(Date.now())),{ok:!0,data:{results:f,syncedCount:f.filter(e=>e.status===`completed`).length,totalReachable:d.length}}}case`START_PAIRING`:return(await X(`sync`)).allowed?{ok:!0}:{ok:!1,error:`pro_required`};case`CANCEL_PAIRING`:return{ok:!0};case`ACCEPT_PAIRING`:return(await X(`sync`)).allowed?{ok:!0}:{ok:!1,error:`pro_required`};case`REMOVE_PAIRED_DEVICE`:{let{deviceId:e}=r.payload,{removePairedDevice:n}=await t(async()=>{let{removePairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{removePairedDevice:e}},__vite__mapDeps([2,1]));return await n(e),{ok:!0}}case`REMOVE_TRUSTED_NETWORK`:{let{ssid:e,bssid:n,isTailscale:i}=r.payload,{removeTrustedNetwork:a,getTrustedNetworks:o}=await t(async()=>{let{removeTrustedNetwork:e,getTrustedNetworks:t}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{removeTrustedNetwork:e,getTrustedNetworks:t}},__vite__mapDeps([2,1])),s=(await o()).find(t=>(i?t.isTailscale:t.ssid===e)&&(!n||t.bssid===n));return s&&await a(s.addedAt),{ok:!0}}case`MARK_NETWORK_TRUSTED`:{let{addTrustedNetwork:e}=await t(async()=>{let{addTrustedNetwork:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addTrustedNetwork:e}},__vite__mapDeps([2,1])),{getCurrentNetwork:n}=await t(async()=>{let{getCurrentNetwork:e}=await import(`./sync-network-JnKjAtqt.js`);return{getCurrentNetwork:e}},[]),r=await n();return await e({ssid:r.ssid,bssid:r.bssid,isTailscale:r.isTailscale,addedAt:Date.now()}),{ok:!0}}case`GET_INCOMING_PAIRING_REQUEST`:{let{getIncomingPairingRequest:e}=await t(async()=>{let{getIncomingPairingRequest:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getIncomingPairingRequest:e}},__vite__mapDeps([2,1]));return{ok:!0,data:await e()}}case`RESPOND_INCOMING_PAIRING`:{let{accept:e}=r.payload,{getIncomingPairingRequest:n,clearIncomingPairingRequest:i,addPairedDevice:a}=await t(async()=>{let{getIncomingPairingRequest:e,clearIncomingPairingRequest:t,addPairedDevice:n}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getIncomingPairingRequest:e,clearIncomingPairingRequest:t,addPairedDevice:n}},__vite__mapDeps([2,1])),o=await n();if(!o)return{ok:!1,error:`no_pending_request`};if(Date.now()>o.expiresAt)return await i(),{ok:!1,error:`expired`};let s=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{encodeSyncMessage:c}=await t(async()=>{let{encodeSyncMessage:e}=await import(`./sync-wire-O_oTp2Oy.js`).then(e=>e.r);return{encodeSyncMessage:e}},__vite__mapDeps([12,1]));if(await i(),o.connectionId){try{if(e){let e=await s.getIdentityPublicKey(),t=await Z();s.sendSyncData(o.connectionId,c({type:`PAIR_ACCEPT`,public_key_hex:e,device_name:t})),await s.trustDevice(o.publicKeyHex,o.deviceName),await a({deviceId:o.publicKeyHex,displayName:o.deviceName,x25519PublicKey:o.publicKeyHex,pairedAt:Date.now(),lastSeenAt:Date.now()})}else s.sendSyncData(o.connectionId,c({type:`PAIR_REJECT`,reason:`user_declined`}))}catch{}try{s.disconnectFromPeer(o.connectionId)}catch{}}else if(e)try{await s.trustDevice(o.publicKeyHex,o.deviceName)}catch{}return{ok:!0,data:{accepted:e,deviceName:o.deviceName}}}case`START_PEER_DISCOVERY`:if(!(await X(`sync`)).allowed)return{ok:!1,error:`pro_required`};try{return await dt(),{ok:!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`discovery_failed`}}case`STOP_PEER_DISCOVERY`:try{await ft()}catch{}return{ok:!0};case`START_PAIRING_SERVER`:if(e.isNativePlatform())return{ok:!1,error:`android_pairing_show_not_yet_supported`};if(!(await X(`sync`)).allowed)return{ok:!1,error:`pro_required`};try{let e=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{setActivePairingToken:n}=await t(async()=>{let{setActivePairingToken:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setActivePairingToken:e}},__vite__mapDeps([11,1])),{getOrCreateLocalDeviceId:r}=await t(async()=>{let{getOrCreateLocalDeviceId:e}=await import(`./sync-identity-glue-8n3JhJIb.js`);return{getOrCreateLocalDeviceId:e}},[]);e.connectSyncHost();let i=ut(),a=Date.now()+lt,o=await r(),s=await Z();return await e.startPairingServer({token:i,deviceId:o,name:s}),await n({token:i,expiresAt:a}),{ok:!0,data:{token:i,expiresAt:a}}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`pairing_server_failed`}}case`STOP_PAIRING_SERVER`:if(e.isNativePlatform())return{ok:!0};try{let e=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{setActivePairingToken:n}=await t(async()=>{let{setActivePairingToken:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setActivePairingToken:e}},__vite__mapDeps([11,1]));await n(null),e.isHostConnected()&&await e.stopPairingServer()}catch{}return{ok:!0};case`CONNECT_WITH_CODE`:{if(e.isNativePlatform()){if(!(await X(`sync`)).allowed)return{ok:!1,error:`pro_required`};let{token:e}=r.payload,n=String(e).replace(/\D/g,``);if(n.length!==6)return{ok:!1,error:`invalid_code`};try{let{registerPlugin:e}=await t(async()=>{let{registerPlugin:e}=await import(`./dist-C5po-C0e.js`).then(e=>e.r);return{registerPlugin:e}},__vite__mapDeps([5,1])),r=await e(`Sync`).resolvePeerByCode({token:n,timeoutMs:8e3});if(r.wsPort===void 0)return{ok:!1,error:`peer_missing_ws_port`};let i={deviceId:r.deviceId,deviceName:r.name,host:r.host,port:r.tcpPort,wsPort:r.wsPort,x25519PublicKey:r.x25519PublicKey,alreadyPaired:!1},{getAndroidSyncIdentity:a}=await t(async()=>{let{getAndroidSyncIdentity:e}=await import(`./android-sync-identity-BAhJ8ODd.js`);return{getAndroidSyncIdentity:e}},__vite__mapDeps([14,5,1,15])),o=await a(),s=Array.from(o.publicKey,e=>e.toString(16).padStart(2,`0`)).join(``),c=await Z(),{runCapacitorPairingHandshake:l}=await t(async()=>{let{runCapacitorPairingHandshake:e}=await import(`./capacitor-pairing-handshake-BGdkGDOJ.js`);return{runCapacitorPairingHandshake:e}},__vite__mapDeps([16,15,12,1])),{addPairedDevice:u}=await t(async()=>{let{addPairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addPairedDevice:e}},__vite__mapDeps([2,1])),{setRecentPairing:d}=await t(async()=>{let{setRecentPairing:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setRecentPairing:e}},__vite__mapDeps([11,1])),f=await l(i,o.privateKey,o.publicKey,s,c);return await u({deviceId:i.deviceId,displayName:f.deviceName||i.deviceName,x25519PublicKey:f.publicKeyHex,pairedAt:Date.now(),lastSeenAt:Date.now()}),await d({deviceName:f.deviceName||i.deviceName,pairedAt:Date.now(),side:`entering`}),{ok:!0,data:{deviceName:f.deviceName||i.deviceName}}}catch(e){let t=e instanceof Error?e.message:String(e);return t.startsWith(`pair_rejected:`)?{ok:!1,error:`pair_rejected`,data:{reason:t.slice(14)}}:t.includes(`no peer responded`)||t.includes(`resolve failed`)?{ok:!1,error:t}:{ok:!1,error:t||`connect_failed`}}}if(!(await X(`sync`)).allowed)return{ok:!1,error:`pro_required`};let{token:n}=r.payload,i=String(n).replace(/\D/g,``);if(i.length!==6)return{ok:!1,error:`invalid_code`};let a=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{encodeSyncMessage:o}=await t(async()=>{let{encodeSyncMessage:e}=await import(`./sync-wire-O_oTp2Oy.js`).then(e=>e.r);return{encodeSyncMessage:e}},__vite__mapDeps([12,1])),{waitForPairingResponse:s}=await t(async()=>{let{waitForPairingResponse:e}=await import(`./sync-coordinator-UN59hhzc.js`);return{waitForPairingResponse:e}},__vite__mapDeps([13,4,3,1,5,7,8,9,12])),{addPairedDevice:c}=await t(async()=>{let{addPairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addPairedDevice:e}},__vite__mapDeps([2,1])),{setRecentPairing:l}=await t(async()=>{let{setRecentPairing:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setRecentPairing:e}},__vite__mapDeps([11,1]));a.connectSyncHost();let u;try{let e=await a.resolvePeerByCode(i,8e3);u=await a.connectToPeer(e.host,e.port,e.x25519PublicKey);let t=await a.getIdentityPublicKey(),n=await Z();a.sendSyncData(u,o({type:`PAIR_REQUEST`,public_key_hex:t,device_name:n}));let r=await s(u,3e4);return r.type===`PAIR_ACCEPT`?(await a.trustDevice(r.public_key_hex,r.device_name),await c({deviceId:e.deviceId,displayName:r.device_name||e.name,x25519PublicKey:r.public_key_hex,pairedAt:Date.now(),lastSeenAt:Date.now()}),a.disconnectFromPeer(u),await l({deviceName:r.device_name||e.name,pairedAt:Date.now(),side:`entering`}),{ok:!0,data:{deviceName:r.device_name||e.name}}):r.type===`PAIR_REJECT`?(a.disconnectFromPeer(u),{ok:!1,error:`pair_rejected`,data:{reason:r.reason}}):(a.disconnectFromPeer(u),{ok:!1,error:`unexpected_response`})}catch(e){if(u)try{a.disconnectFromPeer(u)}catch{}return{ok:!1,error:e instanceof Error?e.message:`connect_failed`}}}case`GET_RECENT_PAIRING`:{let{consumeRecentPairing:e}=await t(async()=>{let{consumeRecentPairing:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{consumeRecentPairing:e}},__vite__mapDeps([11,1]));return{ok:!0,data:await e()}}case`INITIATE_PAIR_WITH_PEER`:{if(!(await X(`sync`)).allowed)return{ok:!1,error:`pro_required`};let{peer:e}=r.payload,n=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{encodeSyncMessage:i}=await t(async()=>{let{encodeSyncMessage:e}=await import(`./sync-wire-O_oTp2Oy.js`).then(e=>e.r);return{encodeSyncMessage:e}},__vite__mapDeps([12,1])),{waitForPairingResponse:a}=await t(async()=>{let{waitForPairingResponse:e}=await import(`./sync-coordinator-UN59hhzc.js`);return{waitForPairingResponse:e}},__vite__mapDeps([13,4,3,1,5,7,8,9,12])),{addPairedDevice:o}=await t(async()=>{let{addPairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addPairedDevice:e}},__vite__mapDeps([2,1])),s;try{s=await n.connectToPeer(e.host,e.port,e.x25519PublicKey);let t=await n.getIdentityPublicKey(),r=await Z();n.sendSyncData(s,i({type:`PAIR_REQUEST`,public_key_hex:t,device_name:r}));let c=await a(s,3e4);return c.type===`PAIR_ACCEPT`?(await n.trustDevice(c.public_key_hex,c.device_name),await o({deviceId:e.deviceId,displayName:c.device_name||e.deviceName,x25519PublicKey:c.public_key_hex,pairedAt:Date.now(),lastSeenAt:Date.now()}),n.disconnectFromPeer(s),{ok:!0,data:{connectionId:s,deviceName:c.device_name}}):c.type===`PAIR_REJECT`?(n.disconnectFromPeer(s),{ok:!1,error:`pair_rejected`,data:{reason:c.reason}}):(n.disconnectFromPeer(s),{ok:!1,error:`unexpected_response`})}catch(e){if(s)try{n.disconnectFromPeer(s)}catch{}return{ok:!1,error:e instanceof Error?e.message:`pair_failed`}}}case`DEBUG_INJECT_INCOMING_PAIRING`:{let{deviceName:e,publicKeyHex:n}=r.payload??{};if(!e||!n)return{ok:!1,error:`missing_payload`};let{setIncomingPairingRequest:i}=await t(async()=>{let{setIncomingPairingRequest:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{setIncomingPairingRequest:e}},__vite__mapDeps([2,1])),a=Date.now();return await i({deviceName:e,publicKeyHex:n,receivedAt:a,expiresAt:a+6e4}),{ok:!0}}case`RESET_SYNC_IDENTITY`:{if(!(await X(`sync`)).allowed)return{ok:!1,error:`pro_required`};let{getPairedDevices:e,removePairedDevice:n}=await t(async()=>{let{getPairedDevices:e,removePairedDevice:t}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getPairedDevices:e,removePairedDevice:t}},__vite__mapDeps([2,1])),r=await e();for(let e of r)await n(e.deviceId);let i=null;try{let{rotateNativeIdentity:e,disconnectSyncHost:n}=await t(async()=>{let{rotateNativeIdentity:e,disconnectSyncHost:t}=await import(`./sync-kQd3KSmO.js`).then(e=>e.m);return{rotateNativeIdentity:e,disconnectSyncHost:t}},__vite__mapDeps([0,1]));i=await e(),n()}catch{i=null}return{ok:!0,data:{removedDevices:r.length,nativePublicKey:i}}}case`RECORD_MANUAL_SUMMON`:{let{domain:e}=r.payload,t=A(),n=t.manualSummonDomains?.[e],i=Date.now();return await x({manualSummonDomains:{...t.manualSummonDomains,[e]:{firstSummonedAt:n?.firstSummonedAt??i,summonCount:(n?.summonCount??0)+1,lastSummonedAt:i}}}),{ok:!0}}case`DECLINE_CARD_SAVE`:{let{last4:e,expMonth:t,expYear:n}=r.payload;return await _e(e,t,n),{ok:!0}}case`IS_CARD_DECLINED`:{let{last4:e,expMonth:t,expYear:n}=r.payload;return{ok:!0,data:await we(e,t,n)}}case`INITIATE_FIREFOX_PASSKEY_CREATE`:{let{rpId:e,rpName:t,userName:n,userDisplayName:i}=r.payload??{};return!e||!n?{ok:!1,error:`rpId and userName required`}:await Re({rpId:e,rpName:t??e,userName:n,userDisplayName:i})}case`COMPLETE_FIREFOX_PASSKEY_CREATE`:{let e=r.payload;return e?await ze(e):{ok:!1,error:`missing payload`}}case`PASSKEY_OFFER_DECLINE`:{let{domain:e}=r.payload??{};return e?(await Ve(e),{ok:!0}):{ok:!1,error:`domain required`}}case`GET_PASSKEY_OFFER_DECLINED`:{let{domain:e}=r.payload??{};return e?{ok:!0,data:await He(e)}:{ok:!1,error:`domain required`}}case`PASSKEY_HAS_CREDENTIALS`:{let e=r.payload;return e?.rpId?await We({rpId:e.rpId,allowCredentials:e.allowCredentials??[]}):{ok:!1,error:`rpId required`}}case`PASSKEY_CREATE`:{let e=r.payload;return!e?.rpId||!e?.userName?{ok:!1,error:`rpId and userName required`}:await Ke(e)}case`PASSKEY_GET`:{let e=r.payload;return e?.rpId?await qe(e):{ok:!1,error:`rpId required`}}case`GET_PASSKEY_FOR_DOMAIN`:{let{domain:e}=r.payload??{};if(!e)return{ok:!1,error:`domain required`};if(!y())return{ok:!0,data:null};let t=E().find(t=>t.passkey?.rpId===e);return!t||!t.passkey?{ok:!0,data:null}:{ok:!0,data:{rpId:t.passkey.rpId,userName:t.passkey.userName,browser:t.passkey.browser}}}case`DESTROY_VAULT`:return j(),await n(),await be(),!e.isNativePlatform()&&chrome.storage.session&&await chrome.storage.session.clear(),{ok:!0};case`SUBMIT_FEEDBACK`:{let{category:e,message:t,version:n,browser:i}=r.payload;return t.trim()?{ok:!0}:{ok:!1,error:`message is empty`}}default:return{ok:!1,error:`unknown message type`}}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`operation failed`}}}function $(t){e.isNativePlatform()||!chrome.tabs?.query||chrome.tabs.query({},e=>{for(let n of e)n.id!==void 0&&chrome.tabs.sendMessage(n.id,t).catch(()=>{})})}function ht(e){return e!==`HAS_VAULT`&&e!==`IS_UNLOCKED`&&e!==`GET_VAULT_STATUS`&&e!==`LOCK`&&e!==`UPDATE_SETTINGS`&&e!==`GET_PENDING_PASSKEY`&&e!==`GET_PASSKEY_PROVIDER_STATE`&&e!==`DECLINE_CARD_SAVE`&&e!==`IS_CARD_DECLINED`&&e!==`SUBMIT_FEEDBACK`}function gt(e){try{let t=new URL(e);if(t.protocol!==`https:`)return!1;let n=t.hostname.toLowerCase();return!(n===`localhost`||n.endsWith(`.localhost`)||_t(n)||vt(n))}catch{return!1}}function _t(e){if(pt.some(t=>e.startsWith(t.prefix)))return!0;let t=e.split(`.`).map(e=>Number(e));return t.length!==4||t.some(e=>!Number.isInteger(e)||e<0||e>255)?!1:t[0]===172&&t[1]>=16&&t[1]<=31}function vt(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase();return t===`::1`||t.startsWith(`fc`)||t.startsWith(`fd`)||t.startsWith(`fe80:`)}export{mt as handleMessage};