{"ast":null,"code":"import _asyncToGenerator from \"/home/mleku/src/orly.dev/next/signer/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { CryptoHelper } from '@common';\nexport const addRelay = /*#__PURE__*/function () {\n  var _ref = _asyncToGenerator(function* (data) {\n    this.assureIsInitialized();\n    // Check, if a relay with the same URL already exists for the identity.\n    const existingRelay = this.getBrowserSessionHandler().browserSessionData?.relays.find(x => x.url.toLowerCase() === data.url.toLowerCase() && x.identityId === data.identityId);\n    if (existingRelay) {\n      throw new Error('A relay with the same URL already exists.');\n    }\n    const browserSessionData = this.getBrowserSessionHandler().browserSessionData;\n    if (!browserSessionData) {\n      throw new Error('Browser session data is undefined.');\n    }\n    const decryptedRelay = {\n      id: CryptoHelper.v4(),\n      identityId: data.identityId,\n      url: data.url,\n      write: data.write,\n      read: data.read\n    };\n    // Add the new relay to the session data.\n    browserSessionData.relays.push(decryptedRelay);\n    this.getBrowserSessionHandler().saveFullData(browserSessionData);\n    // Encrypt the new relay and add it to the sync data.\n    const encryptedRelay = yield encryptRelay.call(this, decryptedRelay);\n    const encryptedRelays = [...(this.getBrowserSyncHandler().browserSyncData?.relays ?? []), encryptedRelay];\n    yield this.getBrowserSyncHandler().saveAndSetPartialData_Relays({\n      relays: encryptedRelays\n    });\n  });\n  return function addRelay(_x) {\n    return _ref.apply(this, arguments);\n  };\n}();\nexport const deleteRelay = /*#__PURE__*/function () {\n  var _ref2 = _asyncToGenerator(function* (relayId) {\n    this.assureIsInitialized();\n    if (!relayId) {\n      return;\n    }\n    const browserSessionData = this.getBrowserSessionHandler().browserSessionData;\n    const browserSyncData = this.getBrowserSyncHandler().browserSyncData;\n    if (!browserSessionData || !browserSyncData) {\n      throw new Error('Browser session or sync data is undefined.');\n    }\n    browserSessionData.relays = browserSessionData.relays.filter(x => x.id !== relayId);\n    yield this.getBrowserSessionHandler().saveFullData(browserSessionData);\n    // Handle Sync data.\n    const encryptedRelayId = yield this.encrypt(relayId);\n    yield this.getBrowserSyncHandler().saveAndSetPartialData_Relays({\n      relays: browserSyncData.relays.filter(x => x.id !== encryptedRelayId)\n    });\n  });\n  return function deleteRelay(_x2) {\n    return _ref2.apply(this, arguments);\n  };\n}();\nexport const updateRelay = /*#__PURE__*/function () {\n  var _ref3 = _asyncToGenerator(function* (relayClone) {\n    this.assureIsInitialized();\n    const browserSessionData = this.getBrowserSessionHandler().browserSessionData;\n    const browserSyncData = this.getBrowserSyncHandler().browserSyncData;\n    if (!browserSessionData || !browserSyncData) {\n      throw new Error('Browser session or sync data is undefined.');\n    }\n    const sessionRelay = browserSessionData.relays.find(x => x.id === relayClone.id);\n    const encryptedRelayId = yield this.encrypt(relayClone.id);\n    const syncRelay = browserSyncData.relays.find(x => x.id === encryptedRelayId);\n    if (!sessionRelay || !syncRelay) {\n      throw new Error('Relay not found in browser session or sync data for update.');\n    }\n    // Handle Session update.\n    sessionRelay.read = relayClone.read;\n    sessionRelay.write = relayClone.write;\n    sessionRelay.url = relayClone.url;\n    yield this.getBrowserSessionHandler().saveFullData(browserSessionData);\n    // Handle Sync update.\n    syncRelay.read = yield this.encrypt(relayClone.read.toString());\n    syncRelay.write = yield this.encrypt(relayClone.write.toString());\n    syncRelay.url = yield this.encrypt(relayClone.url);\n    yield this.getBrowserSyncHandler().saveAndSetPartialData_Relays({\n      relays: browserSyncData.relays\n    });\n  });\n  return function updateRelay(_x3) {\n    return _ref3.apply(this, arguments);\n  };\n}();\nexport const decryptRelay = /*#__PURE__*/function () {\n  var _ref4 = _asyncToGenerator(function* (relay, withLockedVault = undefined) {\n    if (typeof withLockedVault === 'undefined') {\n      const decryptedRelay = {\n        id: yield this.decrypt(relay.id, 'string'),\n        identityId: yield this.decrypt(relay.identityId, 'string'),\n        url: yield this.decrypt(relay.url, 'string'),\n        read: yield this.decrypt(relay.read, 'boolean'),\n        write: yield this.decrypt(relay.write, 'boolean')\n      };\n      return decryptedRelay;\n    }\n    // v2: Use pre-derived key\n    if (withLockedVault.keyBase64) {\n      const decryptedRelay = {\n        id: yield this.decryptWithLockedVaultV2(relay.id, 'string', withLockedVault.iv, withLockedVault.keyBase64),\n        identityId: yield this.decryptWithLockedVaultV2(relay.identityId, 'string', withLockedVault.iv, withLockedVault.keyBase64),\n        url: yield this.decryptWithLockedVaultV2(relay.url, 'string', withLockedVault.iv, withLockedVault.keyBase64),\n        read: yield this.decryptWithLockedVaultV2(relay.read, 'boolean', withLockedVault.iv, withLockedVault.keyBase64),\n        write: yield this.decryptWithLockedVaultV2(relay.write, 'boolean', withLockedVault.iv, withLockedVault.keyBase64)\n      };\n      return decryptedRelay;\n    }\n    // v1: Use password (PBKDF2)\n    const decryptedRelay = {\n      id: yield this.decryptWithLockedVault(relay.id, 'string', withLockedVault.iv, withLockedVault.password),\n      identityId: yield this.decryptWithLockedVault(relay.identityId, 'string', withLockedVault.iv, withLockedVault.password),\n      url: yield this.decryptWithLockedVault(relay.url, 'string', withLockedVault.iv, withLockedVault.password),\n      read: yield this.decryptWithLockedVault(relay.read, 'boolean', withLockedVault.iv, withLockedVault.password),\n      write: yield this.decryptWithLockedVault(relay.write, 'boolean', withLockedVault.iv, withLockedVault.password)\n    };\n    return decryptedRelay;\n  });\n  return function decryptRelay(_x4) {\n    return _ref4.apply(this, arguments);\n  };\n}();\nexport const decryptRelays = /*#__PURE__*/function () {\n  var _ref5 = _asyncToGenerator(function* (relays, withLockedVault = undefined) {\n    const decryptedRelays = [];\n    for (const relay of relays) {\n      const decryptedRelay = yield decryptRelay.call(this, relay, withLockedVault);\n      decryptedRelays.push(decryptedRelay);\n    }\n    return decryptedRelays;\n  });\n  return function decryptRelays(_x5) {\n    return _ref5.apply(this, arguments);\n  };\n}();\nexport const encryptRelay = /*#__PURE__*/function () {\n  var _ref6 = _asyncToGenerator(function* (relay) {\n    const encryptedRelay = {\n      id: yield this.encrypt(relay.id),\n      identityId: yield this.encrypt(relay.identityId),\n      url: yield this.encrypt(relay.url),\n      read: yield this.encrypt(relay.read.toString()),\n      write: yield this.encrypt(relay.write.toString())\n    };\n    return encryptedRelay;\n  });\n  return function encryptRelay(_x6) {\n    return _ref6.apply(this, arguments);\n  };\n}();","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]}