import { ipcRenderer } from "electron" ; export type RendererMenuItem = { label ? : string ; type ? : "normal" | "separator" | "submenu" | "checkbox" | "radio" ; click ? : ( ) => any ; } ; export function invokeMenu ( menu ) { const menuWithoutClick = menu . map ( ( m ) => { return { label : m . label , type : m . type } ; } ) ; ipcRenderer . invoke ( "openContextMenu" , { menu : menuWithoutClick } ) . then ( ( i ) => { if ( i !== - 1 ) { menu [ i ] . click ( ) ; } } ) ; } export function isDev ( ) { if ( "ELECTRON_IS_DEV" in process . env ) { return parseInt ( process . env . ELECTRON_IS_DEV , 10 ) === 1 ; } return process . defaultApp || /node_modules[\\/]electron[\\/]/ . test ( process . execPath ) ; } export function isAppImage ( ) { return process . platform === "linux" && "APPIMAGE" in process . env ; } export function isMac ( ) { return process . platform === "darwin" ; } export function isMacAppStore ( ) { return isMac ( ) && process . mas && process . mas === true ; } export function isWindowsStore ( ) { const isWindows = process . platform === "win32" ; let windowsStore = process . windowsStore ; if ( isWindows && ! windowsStore && process . resourcesPath . indexOf ( "8bitSolutionsLLC.bitwardendesktop_" ) > - 1 ) { windowsStore = true ; } return isWindows && windowsStore === true ; } export function isSnapStore ( ) { return process . platform === "linux" && process . env . SNAP_USER_DATA != null ; } export function isWindowsPortable ( ) { return process . platform === "win32" && process . env . PORTABLE_EXECUTABLE_DIR != null ; } /**
 * Sanitize user agent so external resources used by the app can't built data on our users.
 */ export function cleanUserAgent ( userAgent ) { const userAgentItem = ( startString , endString ) => { const startIndex = userAgent . indexOf ( startString ) ; return userAgent . substring ( startIndex , userAgent . indexOf ( endString , startIndex ) + 1 ) ; } ; const systemInformation = "(Windows NT 10.0; Win64; x64)" ; return userAgent . replace ( userAgentItem ( "(" , ")" ) , systemInformation ) . replace ( userAgentItem ( "Bitwarden" , " " ) , "" ) . replace ( userAgentItem ( "Electron" , " " ) , "" ) ; }