{"version":3,"file":"native-common-c97494e8.js","sources":["../../../src/native/common/FileApp.ts","../../../src/native/common/generatedipc/NativeCryptoFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/FileFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/NativePushFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/ExportFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/InterWindowEventFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/SqlCipherFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/NativeCredentialsFacadeSendDispatcher.ts","../../../src/native/common/NativeLineProtocol.ts","../../../src/native/common/generatedipc/WebAuthnFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/CommonNativeFacadeReceiveDispatcher.ts","../../../src/native/common/generatedipc/DesktopFacadeReceiveDispatcher.ts","../../../src/native/common/generatedipc/InterWindowEventFacadeReceiveDispatcher.ts","../../../src/native/common/generatedipc/MobileFacadeReceiveDispatcher.ts","../../../src/native/common/generatedipc/WebGlobalDispatcher.ts","../../../src/native/common/generatedipc/CommonSystemFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/MobileSystemFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/ThemeFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/SearchTextInAppFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/SettingsFacadeSendDispatcher.ts","../../../src/native/common/generatedipc/DesktopSystemFacadeSendDispatcher.ts"],"sourcesContent":["import { promiseMap } from \"@tutao/tutanota-utils\"\nimport type { MailBundle } from \"../../mail/export/Bundler\"\nimport { FileReference } from \"../../api/common/utils/FileUtils\"\nimport { DataFile } from \"../../api/common/DataFile\"\nimport { HttpMethod } from \"../../api/common/EntityFunctions\"\nimport { FileFacade } from \"./generatedipc/FileFacade.js\"\nimport { ExportFacade } from \"./generatedipc/ExportFacade.js\"\nimport { DownloadTaskResponse } from \"./generatedipc/DownloadTaskResponse\"\nimport { UploadTaskResponse } from \"./generatedipc/UploadTaskResponse\"\nimport { isDesktop } from \"../../api/common/Env.js\"\nimport { ProgrammingError } from \"../../api/common/error/ProgrammingError.js\"\n\nexport type FileUri = string\n\nexport class NativeFileApp {\n\tconstructor(private readonly fileFacade: FileFacade, private readonly exportFacade: ExportFacade) {}\n\n\t/**\n\t * Open the file\n\t * @param file The uri of the file\n\t */\n\topen(file: FileReference): Promise<void> {\n\t\treturn this.fileFacade.open(file.location, file.mimeType)\n\t}\n\n\t/**\n\t * Opens a file chooser to select a file.\n\t * @param boundingRect The file chooser is opened next to the rectangle.\n\t * @param filter an optional list of allowed file extensions\n\t */\n\tasync openFileChooser(boundingRect: DOMRect, filter?: ReadonlyArray<string>): Promise<Array<FileReference>> {\n\t\t/* The file chooser opens next to a location specified by srcRect on larger devices (iPad).\n\t\t * The rectangle must be specifed using values for x, y, height and width.\n\t\t */\n\t\tconst srcRect = {\n\t\t\tx: Math.round(boundingRect.left),\n\t\t\ty: Math.round(boundingRect.top),\n\t\t\twidth: Math.round(boundingRect.width),\n\t\t\theight: Math.round(boundingRect.height),\n\t\t}\n\t\tconst files = await this.fileFacade.openFileChooser(srcRect, filter ?? null)\n\t\treturn promiseMap(files, this.uriToFileRef.bind(this))\n\t}\n\n\topenFolderChooser(): Promise<string | null> {\n\t\treturn this.fileFacade.openFolderChooser()\n\t}\n\n\t/**\n\t * Deletes the file.\n\t * @param  file The uri of the file to delete.\n\t */\n\tdeleteFile(file: FileUri): Promise<void> {\n\t\treturn this.fileFacade.deleteFile(file)\n\t}\n\n\t/**\n\t * Returns the name of the file\n\t * @param file The uri of the file\n\t */\n\tgetName(file: FileUri): Promise<string> {\n\t\treturn this.fileFacade.getName(file)\n\t}\n\n\t/**\n\t * Returns the mime type of the file\n\t * @param file The uri of the file\n\t */\n\tgetMimeType(file: FileUri): Promise<string> {\n\t\treturn this.fileFacade.getMimeType(file)\n\t}\n\n\t/**\n\t * Returns the byte size of a file\n\t * @param file The uri of the file\n\t */\n\tgetSize(file: FileUri): Promise<number> {\n\t\treturn this.fileFacade.getSize(file)\n\t}\n\n\t/**\n\t * Copies the file into downloads folder and notifies system and user about that\n\t * @param localFileUri URI for the source file\n\t * @returns {*} absolute path of the destination file\n\t */\n\tputFileIntoDownloadsFolder(localFileUri: FileUri): Promise<string> {\n\t\treturn this.fileFacade.putFileIntoDownloadsFolder(localFileUri)\n\t}\n\n\tasync writeDataFile(data: DataFile): Promise<FileReference> {\n\t\tconst fileUri = await this.fileFacade.writeDataFile(data)\n\t\treturn {\n\t\t\t_type: \"FileReference\",\n\t\t\tname: data.name,\n\t\t\tmimeType: data.mimeType,\n\t\t\tsize: data.size,\n\t\t\tlocation: fileUri,\n\t\t}\n\t}\n\n\t/**\n\t * Uploads the binary data of a file to tutadb\n\t */\n\tupload(fileUrl: string, targetUrl: string, method: HttpMethod, headers: Dict): Promise<UploadTaskResponse> {\n\t\treturn this.fileFacade.upload(fileUrl, targetUrl, method, headers)\n\t}\n\n\t/**\n\t * Downloads the binary data of a file from tutadb and stores it in the internal memory.\n\t * @returns Resolves to the URI of the downloaded file\n\t */\n\tdownload(sourceUrl: FileUri, filename: string, headers: Dict): Promise<DownloadTaskResponse> {\n\t\treturn this.fileFacade.download(sourceUrl, filename, headers)\n\t}\n\n\t/**\n\t * Get the shortened (first six bytes) of the SHA256 of the file.\n\t * @param fileUri\n\t * @return Base64 encoded, shortened SHA256 hash of the file\n\t */\n\thashFile(fileUri: FileUri): Promise<string> {\n\t\treturn this.fileFacade.hashFile(fileUri)\n\t}\n\n\tclearFileData(): Promise<any> {\n\t\treturn this.fileFacade.clearFileData()\n\t}\n\n\t/**\n\t * take a file location in the form of\n\t *   - a uri like file:///home/user/cat.jpg\n\t *   - an absolute file path like C:\\Users\\cat.jpg\n\t * and return a DataFile populated\n\t * with data and metadata of that file on disk.\n\t *\n\t * returns null\n\t *   - if invoked in apps, because they use FileRef, not DataFile\n\t *   - if file can't be opened for any reason\n\t *   - if path is not absolute\n\t */\n\tasync readDataFile(uriOrPath: string): Promise<DataFile | null> {\n\t\tif (!isDesktop()) throw new ProgrammingError(\"Don't call readDataFile when not in Desktop\")\n\t\treturn this.fileFacade.readDataFile(uriOrPath)\n\t}\n\n\t/**\n\t * Generate an MSG file from the mail bundle and save it in the temp export directory\n\t * @param bundle\n\t * @param fileName\n\t * @returns {Promise<*>}\n\t */\n\tmailToMsg(bundle: MailBundle, fileName: string): Promise<DataFile> {\n\t\treturn this.exportFacade.mailToMsg(bundle, fileName)\n\t}\n\n\t/**\n\t * drag given file names from the temp directory\n\t * @returns {Promise<*>}\n\t * @param fileNames: relative paths to files from the export directory\n\t */\n\tstartNativeDrag(fileNames: Array<string>): Promise<void> {\n\t\treturn this.exportFacade.startNativeDrag(fileNames)\n\t}\n\n\tsaveToExportDir(file: DataFile): Promise<void> {\n\t\treturn this.exportFacade.saveToExportDir(file)\n\t}\n\n\tcheckFileExistsInExportDir(path: string): Promise<boolean> {\n\t\treturn this.exportFacade.checkFileExistsInExportDir(path)\n\t}\n\n\tgetFilesMetaData(filesUris: ReadonlyArray<string>): Promise<Array<FileReference>> {\n\t\treturn promiseMap(filesUris, async (uri) => {\n\t\t\tconst [name, mimeType, size] = await Promise.all([this.getName(uri), this.getMimeType(uri), this.getSize(uri)])\n\t\t\treturn {\n\t\t\t\t_type: \"FileReference\",\n\t\t\t\tname,\n\t\t\t\tmimeType,\n\t\t\t\tsize,\n\t\t\t\tlocation: uri,\n\t\t\t}\n\t\t})\n\t}\n\n\turiToFileRef(uri: string): Promise<FileReference> {\n\t\treturn Promise.all([this.getName(uri), this.getMimeType(uri), this.getSize(uri)]).then(([name, mimeType, size]) => ({\n\t\t\t_type: \"FileReference\",\n\t\t\tname,\n\t\t\tmimeType,\n\t\t\tsize,\n\t\t\tlocation: uri,\n\t\t}))\n\t}\n\n\t/**\n\t * Joins the given files into one single file with a given name. The file is place in the app's temporary decrypted directory.\n\t * @param filename the resulting filename\n\t * @param files The files to join.\n\t *\n\t */\n\tjoinFiles(filename: string, files: Array<FileUri>): Promise<FileUri> {\n\t\treturn this.fileFacade.joinFiles(filename, files)\n\t}\n\n\t/**\n\t * Splits the given file into chunks of the given maximum size. The chunks will be placed in the temporary decrypted directory.\n\t * @param fileUri\n\t * @param maxChunkSizeBytes\n\t */\n\tasync splitFile(fileUri: FileUri, maxChunkSizeBytes: number): Promise<ReadonlyArray<FileUri>> {\n\t\treturn this.fileFacade.splitFile(fileUri, maxChunkSizeBytes)\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { NativeCryptoFacade } from \"./NativeCryptoFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class NativeCryptoFacadeSendDispatcher implements NativeCryptoFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync rsaEncrypt(...args: Parameters<NativeCryptoFacade[\"rsaEncrypt\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativeCryptoFacade\", \"rsaEncrypt\", ...args])\n\t}\n\tasync rsaDecrypt(...args: Parameters<NativeCryptoFacade[\"rsaDecrypt\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativeCryptoFacade\", \"rsaDecrypt\", ...args])\n\t}\n\tasync aesEncryptFile(...args: Parameters<NativeCryptoFacade[\"aesEncryptFile\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativeCryptoFacade\", \"aesEncryptFile\", ...args])\n\t}\n\tasync aesDecryptFile(...args: Parameters<NativeCryptoFacade[\"aesDecryptFile\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativeCryptoFacade\", \"aesDecryptFile\", ...args])\n\t}\n\tasync generateRsaKey(...args: Parameters<NativeCryptoFacade[\"generateRsaKey\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativeCryptoFacade\", \"generateRsaKey\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { FileFacade } from \"./FileFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class FileFacadeSendDispatcher implements FileFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync open(...args: Parameters<FileFacade[\"open\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"open\", ...args])\n\t}\n\tasync openFileChooser(...args: Parameters<FileFacade[\"openFileChooser\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"openFileChooser\", ...args])\n\t}\n\tasync openFolderChooser(...args: Parameters<FileFacade[\"openFolderChooser\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"openFolderChooser\", ...args])\n\t}\n\tasync deleteFile(...args: Parameters<FileFacade[\"deleteFile\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"deleteFile\", ...args])\n\t}\n\tasync getName(...args: Parameters<FileFacade[\"getName\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"getName\", ...args])\n\t}\n\tasync getMimeType(...args: Parameters<FileFacade[\"getMimeType\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"getMimeType\", ...args])\n\t}\n\tasync getSize(...args: Parameters<FileFacade[\"getSize\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"getSize\", ...args])\n\t}\n\tasync putFileIntoDownloadsFolder(...args: Parameters<FileFacade[\"putFileIntoDownloadsFolder\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"putFileIntoDownloadsFolder\", ...args])\n\t}\n\tasync upload(...args: Parameters<FileFacade[\"upload\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"upload\", ...args])\n\t}\n\tasync download(...args: Parameters<FileFacade[\"download\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"download\", ...args])\n\t}\n\tasync hashFile(...args: Parameters<FileFacade[\"hashFile\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"hashFile\", ...args])\n\t}\n\tasync clearFileData(...args: Parameters<FileFacade[\"clearFileData\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"clearFileData\", ...args])\n\t}\n\tasync joinFiles(...args: Parameters<FileFacade[\"joinFiles\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"joinFiles\", ...args])\n\t}\n\tasync splitFile(...args: Parameters<FileFacade[\"splitFile\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"splitFile\", ...args])\n\t}\n\tasync writeDataFile(...args: Parameters<FileFacade[\"writeDataFile\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"writeDataFile\", ...args])\n\t}\n\tasync readDataFile(...args: Parameters<FileFacade[\"readDataFile\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"FileFacade\", \"readDataFile\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { NativePushFacade } from \"./NativePushFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class NativePushFacadeSendDispatcher implements NativePushFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync getPushIdentifier(...args: Parameters<NativePushFacade[\"getPushIdentifier\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativePushFacade\", \"getPushIdentifier\", ...args])\n\t}\n\tasync storePushIdentifierLocally(...args: Parameters<NativePushFacade[\"storePushIdentifierLocally\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativePushFacade\", \"storePushIdentifierLocally\", ...args])\n\t}\n\tasync initPushNotifications(...args: Parameters<NativePushFacade[\"initPushNotifications\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativePushFacade\", \"initPushNotifications\", ...args])\n\t}\n\tasync closePushNotifications(...args: Parameters<NativePushFacade[\"closePushNotifications\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativePushFacade\", \"closePushNotifications\", ...args])\n\t}\n\tasync scheduleAlarms(...args: Parameters<NativePushFacade[\"scheduleAlarms\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativePushFacade\", \"scheduleAlarms\", ...args])\n\t}\n\tasync invalidateAlarmsForUser(...args: Parameters<NativePushFacade[\"invalidateAlarmsForUser\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativePushFacade\", \"invalidateAlarmsForUser\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { ExportFacade } from \"./ExportFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class ExportFacadeSendDispatcher implements ExportFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync mailToMsg(...args: Parameters<ExportFacade[\"mailToMsg\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"ExportFacade\", \"mailToMsg\", ...args])\n\t}\n\tasync saveToExportDir(...args: Parameters<ExportFacade[\"saveToExportDir\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"ExportFacade\", \"saveToExportDir\", ...args])\n\t}\n\tasync startNativeDrag(...args: Parameters<ExportFacade[\"startNativeDrag\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"ExportFacade\", \"startNativeDrag\", ...args])\n\t}\n\tasync checkFileExistsInExportDir(...args: Parameters<ExportFacade[\"checkFileExistsInExportDir\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"ExportFacade\", \"checkFileExistsInExportDir\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { InterWindowEventFacade } from \"./InterWindowEventFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class InterWindowEventFacadeSendDispatcher implements InterWindowEventFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync localUserDataInvalidated(...args: Parameters<InterWindowEventFacade[\"localUserDataInvalidated\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"InterWindowEventFacade\", \"localUserDataInvalidated\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { SqlCipherFacade } from \"./SqlCipherFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class SqlCipherFacadeSendDispatcher implements SqlCipherFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync openDb(...args: Parameters<SqlCipherFacade[\"openDb\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SqlCipherFacade\", \"openDb\", ...args])\n\t}\n\tasync closeDb(...args: Parameters<SqlCipherFacade[\"closeDb\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SqlCipherFacade\", \"closeDb\", ...args])\n\t}\n\tasync deleteDb(...args: Parameters<SqlCipherFacade[\"deleteDb\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SqlCipherFacade\", \"deleteDb\", ...args])\n\t}\n\tasync run(...args: Parameters<SqlCipherFacade[\"run\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SqlCipherFacade\", \"run\", ...args])\n\t}\n\tasync get(...args: Parameters<SqlCipherFacade[\"get\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SqlCipherFacade\", \"get\", ...args])\n\t}\n\tasync all(...args: Parameters<SqlCipherFacade[\"all\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SqlCipherFacade\", \"all\", ...args])\n\t}\n\tasync lockRangesDbAccess(...args: Parameters<SqlCipherFacade[\"lockRangesDbAccess\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SqlCipherFacade\", \"lockRangesDbAccess\", ...args])\n\t}\n\tasync unlockRangesDbAccess(...args: Parameters<SqlCipherFacade[\"unlockRangesDbAccess\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SqlCipherFacade\", \"unlockRangesDbAccess\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { NativeCredentialsFacade } from \"./NativeCredentialsFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class NativeCredentialsFacadeSendDispatcher implements NativeCredentialsFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync encryptUsingKeychain(...args: Parameters<NativeCredentialsFacade[\"encryptUsingKeychain\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativeCredentialsFacade\", \"encryptUsingKeychain\", ...args])\n\t}\n\tasync decryptUsingKeychain(...args: Parameters<NativeCredentialsFacade[\"decryptUsingKeychain\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativeCredentialsFacade\", \"decryptUsingKeychain\", ...args])\n\t}\n\tasync getSupportedEncryptionModes(...args: Parameters<NativeCredentialsFacade[\"getSupportedEncryptionModes\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"NativeCredentialsFacade\", \"getSupportedEncryptionModes\", ...args])\n\t}\n}\n","/**\n * this file contains the typescript implementation of the line protocol\n * for IPC used by the mobile apps that can't use the structured clone\n * algorithm.\n *\n * to prevent us from parsing the messages twice -- once as a dict to find\n * out the type and method, a second time to parse the arguments into\n * their actual types -- we use a line-based protocol. It supports\n * requests with arbitrary arguments, responses with a return value\n * and request errors with an attached error object and works as\n * follows:\n *\n * \tline\t\ttype\t\tcontent\t\t\t\tnote\n *  [1] \t\tall\t\t\t<type> \t\t\t\t\"request\", \"response\" or \"responseError\"\n *  [2]\t\t\tall\t\t\t<requestId>\t\t\ta string like \"main123\", responses and errors cite the original requestId\n *  [3]\t\t\trequest\t\t<method>\t\t\ta string method name to invoke\n *  [3]\t\t\tresponse\t<return>\t\t\tjson-encoded return value\n *  [3]\t\t\terror\t\t<error>\t\t\t\tjson-encoded error object\n *  [4]\t\t\trequest\t\t<arg0>\t\t\t\tjson-encoded first argument\n *  ...\n *  [n] \t\trequest\t\t<argx>\t\t\t\tjson-encoded last argument\n */\nimport { Message, Request, RequestError, Response } from \"../../api/common/MessageDispatcher.js\"\nimport { ProgrammingError } from \"../../api/common/error/ProgrammingError.js\"\nimport { base64ToUint8Array, uint8ArrayToBase64 } from \"@tutao/tutanota-utils\"\n\nexport type NativeMessage = Message<NativeRequestType>\nexport type JsMessage = Message<JsRequestType>\nexport type JsMessageHandler = (message: JsMessage) => unknown\n\n/**\n * serialize a native message to the line protocol used in the apps\n * @param message\n */\nexport function encodeNativeMessage(message: NativeMessage): string {\n\tlet encodedMessage: Array<string> = []\n\tencodedMessage.push(message.type)\n\tencodedMessage.push(message.id)\n\tswitch (message.type) {\n\t\tcase \"request\":\n\t\t\tencodedMessage.push(message.requestType)\n\t\t\tif (message.args.length === 0) {\n\t\t\t\tencodedMessage.push(\"\")\n\t\t\t}\n\t\t\tfor (const arg of message.args) {\n\t\t\t\tencodedMessage.push(encodeValueForNative(arg))\n\t\t\t}\n\t\t\tbreak\n\t\tcase \"response\":\n\t\t\tencodedMessage.push(encodeValueForNative(message.value))\n\t\t\tbreak\n\t\tcase \"requestError\":\n\t\t\tencodedMessage.push(encodeValueForNative(message.error))\n\t\t\tbreak\n\t}\n\treturn encodedMessage.join(\"\\n\")\n}\n\nexport function encodeValueForNative(value: unknown): string {\n\treturn JSON.stringify(replaceBytesWithWrapper(value))\n}\n\nconst BYTES_MARKER = \"__bytes\"\n\nexport function replaceBytesWithWrapper(value: unknown): unknown {\n\tif (value == null) {\n\t\treturn null\n\t} else if (value instanceof Uint8Array) {\n\t\treturn { data: uint8ArrayToBase64(value), marker: BYTES_MARKER }\n\t} else if (Array.isArray(value)) {\n\t\treturn value.map(replaceBytesWithWrapper)\n\t} else if (typeof value === \"object\") {\n\t\tconst newObject: Record<string, any> = {}\n\t\tfor (const [key, field] of Object.entries(value)) {\n\t\t\tnewObject[key] = replaceBytesWithWrapper(field)\n\t\t}\n\t\treturn newObject\n\t} else {\n\t\treturn value\n\t}\n}\n\nexport function replaceWrapperByBytes(value: unknown): unknown {\n\tif (value == null) {\n\t\treturn null\n\t} else if (isByteWrapper(value)) {\n\t\treturn base64ToUint8Array(value.data)\n\t} else if (Array.isArray(value)) {\n\t\treturn value.map(replaceWrapperByBytes)\n\t} else if (typeof value === \"object\") {\n\t\tconst newObject: Record<string, any> = {}\n\t\tfor (const [key, field] of Object.entries(value)) {\n\t\t\tnewObject[key] = replaceWrapperByBytes(field)\n\t\t}\n\t\treturn newObject\n\t} else {\n\t\treturn value\n\t}\n}\n\nfunction isByteWrapper(value: unknown): value is { marker: typeof BYTES_MARKER; data: string } {\n\treturn (\n\t\tvalue != null &&\n\t\ttypeof value === \"object\" &&\n\t\t(value as Record<string, unknown>).marker === BYTES_MARKER &&\n\t\ttypeof (value as Record<string, unknown>).data === \"string\"\n\t)\n}\n\n/**\n * decode a string received over the native bridge in the apps into a native message object\n * @param encoded\n */\nexport function decodeNativeMessage(encoded: string): JsMessage {\n\tconst [type, messageId, ...rest] = encoded.split(\"\\n\")\n\tlet parsedMessage: Message<any>\n\tswitch (type) {\n\t\tcase \"request\":\n\t\t\tconst [requestType, ...args] = rest\n\t\t\tparsedMessage = new Request(\n\t\t\t\trequestType,\n\t\t\t\targs.map((s) => decodeValueFromNative(s)),\n\t\t\t\tmessageId,\n\t\t\t)\n\t\t\tbreak\n\t\tcase \"response\":\n\t\t\tconst [value] = rest\n\t\t\tparsedMessage = new Response(messageId, decodeValueFromNative(value))\n\t\t\tbreak\n\t\tcase \"requestError\":\n\t\t\tconst [error] = rest\n\t\t\tparsedMessage = new RequestError(messageId, decodeValueFromNative(error) as Error)\n\t\t\tbreak\n\t\tdefault:\n\t\t\tthrow new ProgrammingError(`unknown message type: ${type}`)\n\t}\n\treturn parsedMessage\n}\n\nexport function decodeValueFromNative(encoded: string): unknown {\n\treturn replaceWrapperByBytes(JSON.parse(encoded))\n}\n","/* generated file, don't edit. */\n\nimport { WebAuthnFacade } from \"./WebAuthnFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class WebAuthnFacadeSendDispatcher implements WebAuthnFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync register(...args: Parameters<WebAuthnFacade[\"register\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"WebAuthnFacade\", \"register\", ...args])\n\t}\n\tasync sign(...args: Parameters<WebAuthnFacade[\"sign\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"WebAuthnFacade\", \"sign\", ...args])\n\t}\n\tasync abortCurrentOperation(...args: Parameters<WebAuthnFacade[\"abortCurrentOperation\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"WebAuthnFacade\", \"abortCurrentOperation\", ...args])\n\t}\n\tasync isSupported(...args: Parameters<WebAuthnFacade[\"isSupported\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"WebAuthnFacade\", \"isSupported\", ...args])\n\t}\n\tasync canAttemptChallengeForRpId(...args: Parameters<WebAuthnFacade[\"canAttemptChallengeForRpId\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"WebAuthnFacade\", \"canAttemptChallengeForRpId\", ...args])\n\t}\n\tasync canAttemptChallengeForU2FAppId(...args: Parameters<WebAuthnFacade[\"canAttemptChallengeForU2FAppId\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"WebAuthnFacade\", \"canAttemptChallengeForU2FAppId\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { CommonNativeFacade } from \"./CommonNativeFacade.js\"\n\nexport class CommonNativeFacadeReceiveDispatcher {\n\tconstructor(private readonly facade: CommonNativeFacade) {}\n\tasync dispatch(method: string, arg: Array<any>): Promise<any> {\n\t\tswitch (method) {\n\t\t\tcase \"createMailEditor\": {\n\t\t\t\tconst filesUris: ReadonlyArray<string> = arg[0]\n\t\t\t\tconst text: string = arg[1]\n\t\t\t\tconst addresses: ReadonlyArray<string> = arg[2]\n\t\t\t\tconst subject: string = arg[3]\n\t\t\t\tconst mailToUrlString: string = arg[4]\n\t\t\t\treturn this.facade.createMailEditor(filesUris, text, addresses, subject, mailToUrlString)\n\t\t\t}\n\t\t\tcase \"openMailBox\": {\n\t\t\t\tconst userId: string = arg[0]\n\t\t\t\tconst address: string = arg[1]\n\t\t\t\tconst requestedPath: string | null = arg[2]\n\t\t\t\treturn this.facade.openMailBox(userId, address, requestedPath)\n\t\t\t}\n\t\t\tcase \"openCalendar\": {\n\t\t\t\tconst userId: string = arg[0]\n\t\t\t\treturn this.facade.openCalendar(userId)\n\t\t\t}\n\t\t\tcase \"showAlertDialog\": {\n\t\t\t\tconst translationKey: string = arg[0]\n\t\t\t\treturn this.facade.showAlertDialog(translationKey)\n\t\t\t}\n\t\t\tcase \"invalidateAlarms\": {\n\t\t\t\treturn this.facade.invalidateAlarms()\n\t\t\t}\n\t\t}\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { ElectronResult } from \"./ElectronResult.js\"\nimport { ErrorInfo } from \"./ErrorInfo.js\"\nimport { NativeShortcut } from \"./NativeShortcut.js\"\nimport { DesktopFacade } from \"./DesktopFacade.js\"\n\nexport class DesktopFacadeReceiveDispatcher {\n\tconstructor(private readonly facade: DesktopFacade) {}\n\tasync dispatch(method: string, arg: Array<any>): Promise<any> {\n\t\tswitch (method) {\n\t\t\tcase \"print\": {\n\t\t\t\treturn this.facade.print()\n\t\t\t}\n\t\t\tcase \"showSpellcheckDropdown\": {\n\t\t\t\treturn this.facade.showSpellcheckDropdown()\n\t\t\t}\n\t\t\tcase \"openFindInPage\": {\n\t\t\t\treturn this.facade.openFindInPage()\n\t\t\t}\n\t\t\tcase \"applySearchResultToOverlay\": {\n\t\t\t\tconst result: ElectronResult | null = arg[0]\n\t\t\t\treturn this.facade.applySearchResultToOverlay(result)\n\t\t\t}\n\t\t\tcase \"reportError\": {\n\t\t\t\tconst errorInfo: ErrorInfo = arg[0]\n\t\t\t\treturn this.facade.reportError(errorInfo)\n\t\t\t}\n\t\t\tcase \"updateTargetUrl\": {\n\t\t\t\tconst url: string = arg[0]\n\t\t\t\tconst appPath: string = arg[1]\n\t\t\t\treturn this.facade.updateTargetUrl(url, appPath)\n\t\t\t}\n\t\t\tcase \"openCustomer\": {\n\t\t\t\tconst mailAddress: string | null = arg[0]\n\t\t\t\treturn this.facade.openCustomer(mailAddress)\n\t\t\t}\n\t\t\tcase \"addShortcuts\": {\n\t\t\t\tconst shortcuts: ReadonlyArray<NativeShortcut> = arg[0]\n\t\t\t\treturn this.facade.addShortcuts(shortcuts)\n\t\t\t}\n\t\t\tcase \"appUpdateDownloaded\": {\n\t\t\t\treturn this.facade.appUpdateDownloaded()\n\t\t\t}\n\t\t}\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { InterWindowEventFacade } from \"./InterWindowEventFacade.js\"\n\nexport class InterWindowEventFacadeReceiveDispatcher {\n\tconstructor(private readonly facade: InterWindowEventFacade) {}\n\tasync dispatch(method: string, arg: Array<any>): Promise<any> {\n\t\tswitch (method) {\n\t\t\tcase \"localUserDataInvalidated\": {\n\t\t\t\tconst userId: string = arg[0]\n\t\t\t\treturn this.facade.localUserDataInvalidated(userId)\n\t\t\t}\n\t\t}\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { MobileFacade } from \"./MobileFacade.js\"\n\nexport class MobileFacadeReceiveDispatcher {\n\tconstructor(private readonly facade: MobileFacade) {}\n\tasync dispatch(method: string, arg: Array<any>): Promise<any> {\n\t\tswitch (method) {\n\t\t\tcase \"handleBackPress\": {\n\t\t\t\treturn this.facade.handleBackPress()\n\t\t\t}\n\t\t\tcase \"visibilityChange\": {\n\t\t\t\tconst visibility: boolean = arg[0]\n\t\t\t\treturn this.facade.visibilityChange(visibility)\n\t\t\t}\n\t\t\tcase \"keyboardSizeChanged\": {\n\t\t\t\tconst newSize: number = arg[0]\n\t\t\t\treturn this.facade.keyboardSizeChanged(newSize)\n\t\t\t}\n\t\t}\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { CommonNativeFacade } from \"./CommonNativeFacade.js\"\nimport { CommonNativeFacadeReceiveDispatcher } from \"./CommonNativeFacadeReceiveDispatcher.js\"\nimport { DesktopFacade } from \"./DesktopFacade.js\"\nimport { DesktopFacadeReceiveDispatcher } from \"./DesktopFacadeReceiveDispatcher.js\"\nimport { InterWindowEventFacade } from \"./InterWindowEventFacade.js\"\nimport { InterWindowEventFacadeReceiveDispatcher } from \"./InterWindowEventFacadeReceiveDispatcher.js\"\nimport { MobileFacade } from \"./MobileFacade.js\"\nimport { MobileFacadeReceiveDispatcher } from \"./MobileFacadeReceiveDispatcher.js\"\n\nexport class WebGlobalDispatcher {\n\tprivate readonly commonNativeFacade: CommonNativeFacadeReceiveDispatcher\n\tprivate readonly desktopFacade: DesktopFacadeReceiveDispatcher\n\tprivate readonly interWindowEventFacade: InterWindowEventFacadeReceiveDispatcher\n\tprivate readonly mobileFacade: MobileFacadeReceiveDispatcher\n\tconstructor(\n\t\tcommonNativeFacade: CommonNativeFacade,\n\t\tdesktopFacade: DesktopFacade,\n\t\tinterWindowEventFacade: InterWindowEventFacade,\n\t\tmobileFacade: MobileFacade,\n\t) {\n\t\tthis.commonNativeFacade = new CommonNativeFacadeReceiveDispatcher(commonNativeFacade)\n\t\tthis.desktopFacade = new DesktopFacadeReceiveDispatcher(desktopFacade)\n\t\tthis.interWindowEventFacade = new InterWindowEventFacadeReceiveDispatcher(interWindowEventFacade)\n\t\tthis.mobileFacade = new MobileFacadeReceiveDispatcher(mobileFacade)\n\t}\n\n\tasync dispatch(facadeName: string, methodName: string, args: Array<any>) {\n\t\tswitch (facadeName) {\n\t\t\tcase \"CommonNativeFacade\":\n\t\t\t\treturn this.commonNativeFacade.dispatch(methodName, args)\n\t\t\tcase \"DesktopFacade\":\n\t\t\t\treturn this.desktopFacade.dispatch(methodName, args)\n\t\t\tcase \"InterWindowEventFacade\":\n\t\t\t\treturn this.interWindowEventFacade.dispatch(methodName, args)\n\t\t\tcase \"MobileFacade\":\n\t\t\t\treturn this.mobileFacade.dispatch(methodName, args)\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"licc messed up! \" + facadeName)\n\t\t}\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { CommonSystemFacade } from \"./CommonSystemFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class CommonSystemFacadeSendDispatcher implements CommonSystemFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync initializeRemoteBridge(...args: Parameters<CommonSystemFacade[\"initializeRemoteBridge\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"CommonSystemFacade\", \"initializeRemoteBridge\", ...args])\n\t}\n\tasync reload(...args: Parameters<CommonSystemFacade[\"reload\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"CommonSystemFacade\", \"reload\", ...args])\n\t}\n\tasync getLog(...args: Parameters<CommonSystemFacade[\"getLog\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"CommonSystemFacade\", \"getLog\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { MobileSystemFacade } from \"./MobileSystemFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class MobileSystemFacadeSendDispatcher implements MobileSystemFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync findSuggestions(...args: Parameters<MobileSystemFacade[\"findSuggestions\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"MobileSystemFacade\", \"findSuggestions\", ...args])\n\t}\n\tasync openLink(...args: Parameters<MobileSystemFacade[\"openLink\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"MobileSystemFacade\", \"openLink\", ...args])\n\t}\n\tasync shareText(...args: Parameters<MobileSystemFacade[\"shareText\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"MobileSystemFacade\", \"shareText\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { ThemeFacade } from \"./ThemeFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class ThemeFacadeSendDispatcher implements ThemeFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync getThemes(...args: Parameters<ThemeFacade[\"getThemes\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"ThemeFacade\", \"getThemes\", ...args])\n\t}\n\tasync setThemes(...args: Parameters<ThemeFacade[\"setThemes\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"ThemeFacade\", \"setThemes\", ...args])\n\t}\n\tasync getSelectedTheme(...args: Parameters<ThemeFacade[\"getSelectedTheme\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"ThemeFacade\", \"getSelectedTheme\", ...args])\n\t}\n\tasync setSelectedTheme(...args: Parameters<ThemeFacade[\"setSelectedTheme\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"ThemeFacade\", \"setSelectedTheme\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { SearchTextInAppFacade } from \"./SearchTextInAppFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class SearchTextInAppFacadeSendDispatcher implements SearchTextInAppFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync findInPage(...args: Parameters<SearchTextInAppFacade[\"findInPage\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SearchTextInAppFacade\", \"findInPage\", ...args])\n\t}\n\tasync stopFindInPage(...args: Parameters<SearchTextInAppFacade[\"stopFindInPage\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SearchTextInAppFacade\", \"stopFindInPage\", ...args])\n\t}\n\tasync setSearchOverlayState(...args: Parameters<SearchTextInAppFacade[\"setSearchOverlayState\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SearchTextInAppFacade\", \"setSearchOverlayState\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { SettingsFacade } from \"./SettingsFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class SettingsFacadeSendDispatcher implements SettingsFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync getStringConfigValue(...args: Parameters<SettingsFacade[\"getStringConfigValue\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"getStringConfigValue\", ...args])\n\t}\n\tasync setStringConfigValue(...args: Parameters<SettingsFacade[\"setStringConfigValue\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"setStringConfigValue\", ...args])\n\t}\n\tasync getBooleanConfigValue(...args: Parameters<SettingsFacade[\"getBooleanConfigValue\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"getBooleanConfigValue\", ...args])\n\t}\n\tasync setBooleanConfigValue(...args: Parameters<SettingsFacade[\"setBooleanConfigValue\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"setBooleanConfigValue\", ...args])\n\t}\n\tasync getUpdateInfo(...args: Parameters<SettingsFacade[\"getUpdateInfo\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"getUpdateInfo\", ...args])\n\t}\n\tasync registerMailto(...args: Parameters<SettingsFacade[\"registerMailto\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"registerMailto\", ...args])\n\t}\n\tasync unregisterMailto(...args: Parameters<SettingsFacade[\"unregisterMailto\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"unregisterMailto\", ...args])\n\t}\n\tasync integrateDesktop(...args: Parameters<SettingsFacade[\"integrateDesktop\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"integrateDesktop\", ...args])\n\t}\n\tasync unIntegrateDesktop(...args: Parameters<SettingsFacade[\"unIntegrateDesktop\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"unIntegrateDesktop\", ...args])\n\t}\n\tasync getSpellcheckLanguages(...args: Parameters<SettingsFacade[\"getSpellcheckLanguages\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"getSpellcheckLanguages\", ...args])\n\t}\n\tasync getIntegrationInfo(...args: Parameters<SettingsFacade[\"getIntegrationInfo\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"getIntegrationInfo\", ...args])\n\t}\n\tasync enableAutoLaunch(...args: Parameters<SettingsFacade[\"enableAutoLaunch\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"enableAutoLaunch\", ...args])\n\t}\n\tasync disableAutoLaunch(...args: Parameters<SettingsFacade[\"disableAutoLaunch\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"disableAutoLaunch\", ...args])\n\t}\n\tasync manualUpdate(...args: Parameters<SettingsFacade[\"manualUpdate\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"manualUpdate\", ...args])\n\t}\n\tasync changeLanguage(...args: Parameters<SettingsFacade[\"changeLanguage\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"SettingsFacade\", \"changeLanguage\", ...args])\n\t}\n}\n","/* generated file, don't edit. */\n\nimport { DesktopSystemFacade } from \"./DesktopSystemFacade.js\"\n\ninterface NativeInterface {\n\tinvokeNative(requestType: string, args: unknown[]): Promise<any>\n}\nexport class DesktopSystemFacadeSendDispatcher implements DesktopSystemFacade {\n\tconstructor(private readonly transport: NativeInterface) {}\n\tasync openNewWindow(...args: Parameters<DesktopSystemFacade[\"openNewWindow\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"DesktopSystemFacade\", \"openNewWindow\", ...args])\n\t}\n\tasync focusApplicationWindow(...args: Parameters<DesktopSystemFacade[\"focusApplicationWindow\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"DesktopSystemFacade\", \"focusApplicationWindow\", ...args])\n\t}\n\tasync sendSocketMessage(...args: Parameters<DesktopSystemFacade[\"sendSocketMessage\"]>) {\n\t\treturn this.transport.invokeNative(\"ipc\", [\"DesktopSystemFacade\", \"sendSocketMessage\", ...args])\n\t}\n}\n"],"names":["exports","constructor","fileFacade","exportFacade","this","open","file","location","mimeType","async","boundingRect","filter","srcRect","x","Math","round","left","y","top","width","height","files","openFileChooser","promiseMap","uriToFileRef","bind","openFolderChooser","deleteFile","getName","getMimeType","getSize","putFileIntoDownloadsFolder","localFileUri","data","fileUri","writeDataFile","_type","name","size","upload","fileUrl","targetUrl","method","headers","download","sourceUrl","filename","hashFile","clearFileData","uriOrPath","isDesktop","ProgrammingError","readDataFile","mailToMsg","bundle","fileName","startNativeDrag","fileNames","saveToExportDir","checkFileExistsInExportDir","path","getFilesMetaData","filesUris","uri","Promise","all","then","joinFiles","maxChunkSizeBytes","splitFile","transport","args","invokeNative","encodeNativeMessage","message","encodedMessage","push","type","id","requestType","length","arg","encodeValueForNative","value","error","join","JSON","stringify","replaceBytesWithWrapper","BYTES_MARKER","Uint8Array","uint8ArrayToBase64","marker","Array","isArray","map","newObject","key","field","Object","entries","replaceWrapperByBytes","isByteWrapper","base64ToUint8Array","decodeNativeMessage","encoded","messageId","rest","split","parsedMessage","Request","s","decodeValueFromNative","Response","RequestError","parse","CommonNativeFacadeReceiveDispatcher","facade","text","addresses","subject","mailToUrlString","createMailEditor","userId","address","requestedPath","openMailBox","openCalendar","translationKey","showAlertDialog","invalidateAlarms","DesktopFacadeReceiveDispatcher","print","showSpellcheckDropdown","openFindInPage","result","applySearchResultToOverlay","errorInfo","reportError","url","appPath","updateTargetUrl","mailAddress","openCustomer","shortcuts","addShortcuts","appUpdateDownloaded","InterWindowEventFacadeReceiveDispatcher","localUserDataInvalidated","MobileFacadeReceiveDispatcher","handleBackPress","visibility","visibilityChange","newSize","keyboardSizeChanged","commonNativeFacade","desktopFacade","interWindowEventFacade","mobileFacade","facadeName","methodName","dispatch","Error"],"mappings":"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"}