messages-BN1MeRf_.js

39.0 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-kQgcH5o6.js","assets/vault-ByqoQOTt.js","assets/index-Dd8_N7xu.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-BVwn6wHZ.js","assets/android-sync-identity-BAhJ8ODd.js","assets/x25519-DSi3mQjw.js","assets/capacitor-pairing-server-2RAeT9Ze.js","assets/noise-js-Crku9Lwa.js","assets/capacitor-pairing-handshake-CrTUHO4K.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-Dd8_N7xu.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 w,S as se,T as ce,_ as le,a as ue,b as de,c as fe,d as pe,f as me,g as T,h as E,i as he,j as ge,k as _e,l as ve,m as ye,n as be,o as xe,p as D,r as Se,s as Ce,t as O,u as we,v as k,w as A,x as Te,y as Ee}from"./vault-ByqoQOTt.js";import{onVaultLocked as De,onVaultUnlocked as j}from"./sync-lifecycle-kQgcH5o6.js";var Oe=30,M=null;async function N(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 ke(e,t,n=!1){M&&=(clearTimeout(M),null),n||await N(e);let r=k().clipboardClearSeconds,i=(typeof r==`number`&&r>0?r:Oe)*1e3;M=setTimeout(async()=>{try{await N(``)}catch{}M=null},i)}var P=(()=>{let e=typeof chrome<`u`?chrome:void 0;if(e?.webAuthenticationProxy)return!1;try{return(e?.runtime?.getURL?.(``)??``).startsWith(`moz-extension://`)}catch{return!1}})(),F=`passkey_pending_`,Ae=6e4,I=!1,L;__PEACH_E2E_PASSKEYS__;var R=new Map;function z(){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 je(){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 B(e){return`${F}${e}`}async function V(e){chrome.action?.setBadgeText&&(await chrome.action.setBadgeText({text:e}),e&&await chrome.action.setBadgeBackgroundColor({color:`#D96830`}))}async function H(e){chrome.storage.session&&await chrome.storage.session.remove(B(e)),await V(``)}async function U(){try{await chrome.action.openPopup()}catch{await V(`PK`)}}async function Me(){if(!chrome.storage.session)return null;let e=await chrome.storage.session.get(null),t=Object.keys(e).find(e=>e.startsWith(F));if(!t)return null;let n=e[t];return n&&typeof n==`object`?n:null}async function W(e,t){let n=R.get(e);if(!n){await H(e),chrome.storage.session&&await chrome.storage.session.remove(q);return}clearTimeout(n.timeoutId),R.delete(e),await H(e),n.resolve(t)}async function Ne(e){return chrome.storage.session&&await chrome.storage.session.set({[B(e.requestId)]:e}),await U(),new Promise(t=>{let n=setTimeout(async()=>{R.delete(e.requestId),await H(e.requestId),t(!1)},Ae);R.set(e.requestId,{resolve:t,timeoutId:n})})}async function G(){let e=await D(),t=z(),n=e.passkeyProviderEnabled===!0;return{supported:t,enabled:n,attached:t&&I,browserLabel:je(),statusLabel:t?I?`Active`:L?`Another provider is active`:n?`Inactive`:`Disabled`:`Interception unavailable`,conflict:L}}async function Pe(){if(!z()){I=!1,L=`This browser does not expose chrome.webAuthenticationProxy.`;return}if(c()===`firefox`){I=!0,L=void 0;return}if(!I)try{await chrome.webAuthenticationProxy.attach(),I=!0,L=void 0}catch(e){I=!1,L=e instanceof Error?e.message:`Another provider is active.`}}async function Fe(){if(!z()){I=!1;return}if(c()===`firefox`){I=!1,L=void 0;return}try{await chrome.webAuthenticationProxy.detach()}catch{}I=!1,L=void 0}async function Ie(e){return await x({passkeyProviderEnabled:e}),e?await Pe():await Fe(),G()}function Le(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 K(){chrome.tabs.query({},e=>{for(let t of e)t.id!==void 0&&chrome.tabs.sendMessage(t.id,{type:`PASSKEY_PRO_GATE`}).catch(()=>{})})}var q=`passkey_pending_firefox`,Re=`peach_passkey_offer_declined:`,ze=720*60*60*1e3;async function Be(e){if(!await v())return K(),{ok:!1,error:`passkey creation requires Peach Pro`};if(!y())return await U(),{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({[q]:i}),await U(),{ok:!0}}async function Ve(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=Le(e.rpId);return n?await C(n.id,{passkey:t}):await O({type:`login`,title:e.rpName||e.rpId,url:`https://${e.rpId}`,username:e.userName,passkey:t}),chrome.storage.session&&await chrome.storage.session.remove(q),{ok:!0}}function He(e){return`${Re}${e}`}async function Ue(e){e&&await chrome.storage.local.set({[He(e)]:Date.now()})}async function We(e){if(!e)return!1;let t=He(e),n=(await chrome.storage.local.get(t))[t];return typeof n==`number`?Date.now()-n>ze?(await chrome.storage.local.remove(t),!1):!0:!1}function Ge(){return E().filter(e=>e.passkey!==void 0&&!e.deletedAt)}async function Ke(e){if(!P)return{ok:!1,error:`not_applicable`};if(!y())return{ok:!0,hasCredentials:!1};let t=Ge().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 qe(e){return Ne({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 Je(e){if(!P)return{ok:!1,error:`not_applicable`};if(!await v())return K(),{ok:!1,error:`pro_required`};if(!y())return await U(),{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 qe({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=Le(e.rpId);return g?await C(g.id,{passkey:h}):await O({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 Ye(e){if(!P)return{ok:!1,error:`not_applicable`};if(!await v())return K(),{ok:!1,error:`pro_required`};if(!y())return await U(),{ok:!1,error:`vault_locked`};let t=e.allowCredentials??[],n=Ge().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 qe({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 Xe=/bank|pay|finance|invest|mail|gmail|outlook|yahoo|icloud|instagram|twitter|facebook|linkedin/i,Ze=2160*60*60*1e3,Qe=4320*60*60*1e3,$e=60,et=25,tt=15,nt=20,rt=10;async function it(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 at(e){return Xe.test(e)}function ot(e){return at(e)?Ze:Qe}function st(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 ct(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 it(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?at(n):!1,a=t-(e.passwordChangedAt??e.createdAt??t),d=e.password?a>ot(n):!1;d&&(c+=1);let f=(e.breach??0)>0,p=i.has(e.id),m=e.password?st(e.password):!1,h=r&&!e.totp,g=0;f&&(g+=$e),p&&(g+=et),d&&(g+=tt),m&&(g+=nt),h&&(g+=rt),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 lt(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 J(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 ut=`peach_device_name`;async function Y(){try{let e=(await chrome.storage.local.get(ut))[ut];if(typeof e==`string`&&e.trim())return e.trim()}catch{}return e.getPlatform()===`android`?`Peach Android`:e.getPlatform()===`ios`?`Peach iOS`:`Peach`}var dt=300*1e3,X=null;function ft(){let e=new Uint32Array(1);return crypto.getRandomValues(e),(e[0]%1e6).toString().padStart(6,`0`)}var Z=[];async function pt(){await Q();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(),Z=[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 Q(){for(let e of Z)e();Z=[];try{let e=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1]));e.isHostConnected()&&await e.stopDiscovery()}catch{}}var mt=[{prefix:`10.`},{prefix:`127.`},{prefix:`169.254.`},{prefix:`192.168.`}];async function ht(r,a={}){try{if(!e.isNativePlatform()&&a.id!==void 0&&a.id!==chrome.runtime.id)return{ok:!1,error:`invalid sender`};switch(gt(r.type)&&y()&&w(),r.type){case`CREATE_VAULT`:{let{password:e}=r.payload;return await fe(e),await S(),$({type:`VAULT_UNLOCKED`}),j(),{ok:!0}}case`UNLOCK`:{let{password:e}=r.payload,t=await ae(e);return t&&(await S(),$({type:`VAULT_UNLOCKED`}),j()),{ok:t}}case`LOCK`:return A(),De(),{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 de()};case`GET_ENTRIES`:return{ok:!0,data:E()};case`ADD_ENTRY`:return y()?{ok:!0,data:await O(r.payload)}:{ok:!1,error:`vault locked`};case`BATCH_ADD_ENTRIES`:{let{entries:e}=r.payload;return{ok:!0,data:await be(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 ue(`REPLACE_ALL`),{ok:!0};case`GET_VAULT_HISTORY`:return{ok:!0,data:await Ee()};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:Ce()};case`DEDUPLICATE_ENTRIES`:return{ok:!0,data:await we()};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 pe(e),{ok:!0}}case`GET_DELETED_ENTRIES`:return{ok:!0,data:ye()};case`RESTORE_ENTRY`:{let{id:e}=r.payload;return await _e(e),{ok:!0}}case`PURGE_ENTRY`:{let{id:e}=r.payload;return await ce(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 ke(e,t,!!n),{ok:!0}}case`CHECK_BREACH`:{let{password:e}=r.payload;return{ok:!0,data:await he(e)}}case`CHECK_ALL_BREACHES`:{let e=E(),t={};for(let n of e)n.type!==`note`&&n.password&&(t[n.id]=await he(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 D()};case`UPDATE_SETTINGS`:{let e=r.payload;return await x(e),typeof e.autoLockMinutes==`number`&&(await S(),y()&&w()),{ok:!0}}case`GET_PENDING_PASSKEY`:return{ok:!0,data:await Me()};case`APPROVE_PASSKEY`:{let{requestId:e}=r.payload;return await W(e,!0),{ok:!0}}case`DENY_PASSKEY`:{let{requestId:e}=r.payload;return await W(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 pe(e),{ok:!0}}case`GET_PASSKEY_PROVIDER_STATE`:return{ok:!0,data:await G()};case`SET_PASSKEY_PROVIDER_ENABLED`:{let{enabled:e}=r.payload;return e&&!(await J(`passkeys`)).allowed?{ok:!1,error:`pro_required`}:{ok:!0,data:await Ie(e)}}case`FIRE_CANARY_PING`:{let{webhookUrl:e,entryTitle:t,trigger:n}=r.payload;if(!_t(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:le()}:{ok:!1,error:`vault locked`};case`GET_ADVANCED_HEALTH_REPORT`:return(await J(`advanced_health`)).allowed?y()?{ok:!0,data:await ct(E())}:{ok:!1,error:`vault locked`}:{ok:!1,error:`pro_required`};case`INITIATE_PASSWORD_CHANGE`:{if(!(await J(`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=lt(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 se()};case`SETUP_DURESS`:{let{duressPassword:e}=r.payload;return await ge(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 Se(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 J(`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-kQgcH5o6.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-BVwn6wHZ.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 J(`sync`)).allowed?{ok:!0}:{ok:!1,error:`pro_required`};case`CANCEL_PAIRING`:return{ok:!0};case`ACCEPT_PAIRING`:return(await J(`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 Y();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 J(`sync`)).allowed)return{ok:!1,error:`pro_required`};try{return await pt(),{ok:!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`discovery_failed`}}case`STOP_PEER_DISCOVERY`:try{await Q()}catch{}return{ok:!0};case`START_PAIRING_SERVER`:if(e.isNativePlatform()){if(!(await J(`sync`)).allowed)return{ok:!1,error:`pro_required`};try{let{getAndroidSyncIdentity:e}=await t(async()=>{let{getAndroidSyncIdentity:e}=await import(`./android-sync-identity-BAhJ8ODd.js`);return{getAndroidSyncIdentity:e}},__vite__mapDeps([14,5,1,15])),{getOrCreateLocalDeviceId:n}=await t(async()=>{let{getOrCreateLocalDeviceId:e}=await import(`./sync-identity-glue-8n3JhJIb.js`);return{getOrCreateLocalDeviceId:e}},[]),{startCapacitorPairingServer:r}=await t(async()=>{let{startCapacitorPairingServer:e}=await import(`./capacitor-pairing-server-2RAeT9Ze.js`);return{startCapacitorPairingServer:e}},__vite__mapDeps([16,5,1,17,15,12])),{addPairedDevice:i}=await t(async()=>{let{addPairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addPairedDevice:e}},__vite__mapDeps([2,1])),{setActivePairingToken:a,setRecentPairing:o}=await t(async()=>{let{setActivePairingToken:e,setRecentPairing:t}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setActivePairingToken:e,setRecentPairing:t}},__vite__mapDeps([11,1])),s=await e(),c=Array.from(s.publicKey,e=>e.toString(16).padStart(2,`0`)).join(``),l=await n(),u=await Y(),d=ft(),f=Date.now()+dt;return X=await r({privateKey:s.privateKey,publicKey:s.publicKey,publicKeyHex:c,deviceId:l,deviceName:u,token:d,onPaired:async e=>{try{await i({deviceId:e.deviceId,displayName:e.displayName,x25519PublicKey:e.publicKeyHex,pairedAt:Date.now(),lastSeenAt:Date.now()})}catch{}await o({deviceName:e.displayName,pairedAt:Date.now(),side:`showing`}),await a(null),X=null}}),await a({token:d,expiresAt:f}),{ok:!0,data:{token:d,expiresAt:f}}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`pairing_server_failed`}}}if(!(await J(`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=ft(),a=Date.now()+dt,o=await r(),s=await Y();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()){try{let{setActivePairingToken:e}=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 e(null),X&&=(await X.stop(),null)}catch{}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 J(`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 Y(),{runCapacitorPairingHandshake:l}=await t(async()=>{let{runCapacitorPairingHandshake:e}=await import(`./capacitor-pairing-handshake-CrTUHO4K.js`);return{runCapacitorPairingHandshake:e}},__vite__mapDeps([18,17,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 J(`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-BVwn6wHZ.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 Y();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 J(`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-BVwn6wHZ.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 Y();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 J(`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=k(),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 ve(e,t,n),{ok:!0}}case`IS_CARD_DECLINED`:{let{last4:e,expMonth:t,expYear:n}=r.payload;return{ok:!0,data:await Te(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 Be({rpId:e,rpName:t??e,userName:n,userDisplayName:i})}case`COMPLETE_FIREFOX_PASSKEY_CREATE`:{let e=r.payload;return e?await Ve(e):{ok:!1,error:`missing payload`}}case`PASSKEY_OFFER_DECLINE`:{let{domain:e}=r.payload??{};return e?(await Ue(e),{ok:!0}):{ok:!1,error:`domain required`}}case`GET_PASSKEY_OFFER_DECLINED`:{let{domain:e}=r.payload??{};return e?{ok:!0,data:await We(e)}:{ok:!1,error:`domain required`}}case`PASSKEY_HAS_CREDENTIALS`:{let e=r.payload;return e?.rpId?await Ke({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 Je(e)}case`PASSKEY_GET`:{let e=r.payload;return e?.rpId?await Ye(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 A(),await n(),await xe(),!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 gt(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 _t(e){try{let t=new URL(e);if(t.protocol!==`https:`)return!1;let n=t.hostname.toLowerCase();return!(n===`localhost`||n.endsWith(`.localhost`)||vt(n)||yt(n))}catch{return!1}}function vt(e){if(mt.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 yt(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase();return t===`::1`||t.startsWith(`fc`)||t.startsWith(`fd`)||t.startsWith(`fe80:`)}export{ht as handleMessage};