aa93d709c7ada57f9512608ead5dbb420d94e882ec2ee08684aa387ff8928c2c.json raw
1 {"ast":null,"code":"import _asyncToGenerator from \"/home/mleku/src/orly.dev/next/signer/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\n/**\n * Implementation of PermissionRepository using browser storage.\n */\nexport class BrowserPermissionRepository {\n storage;\n encryption;\n constructor(storage, encryption) {\n this.storage = storage;\n this.encryption = encryption;\n }\n findById(id) {\n var _this = this;\n return _asyncToGenerator(function* () {\n const permissions = _this.storage.getSessionPermissions();\n return permissions.find(p => p.id === id.value);\n })();\n }\n find(query) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n let permissions = _this2.storage.getSessionPermissions();\n if (query.identityId) {\n const identityIdValue = query.identityId.value;\n permissions = permissions.filter(p => p.identityId === identityIdValue);\n }\n if (query.host) {\n const host = query.host;\n permissions = permissions.filter(p => p.host === host);\n }\n if (query.method) {\n const method = query.method;\n permissions = permissions.filter(p => p.method === method);\n }\n if (query.kind !== undefined) {\n const kind = query.kind;\n permissions = permissions.filter(p => p.kind === kind);\n }\n return permissions;\n })();\n }\n findExact(identityId, host, method, kind) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n const permissions = _this3.storage.getSessionPermissions();\n return permissions.find(p => p.identityId === identityId.value && p.host === host && p.method === method && (kind === undefined ? p.kind === undefined : p.kind === kind));\n })();\n }\n findByIdentity(identityId) {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n const permissions = _this4.storage.getSessionPermissions();\n return permissions.filter(p => p.identityId === identityId.value);\n })();\n }\n findAll() {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n return _this5.storage.getSessionPermissions();\n })();\n }\n save(permission) {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n const sessionPermissions = _this6.storage.getSessionPermissions();\n const existingIndex = sessionPermissions.findIndex(p => p.id === permission.id);\n if (existingIndex >= 0) {\n sessionPermissions[existingIndex] = permission;\n } else {\n sessionPermissions.push(permission);\n }\n _this6.storage.setSessionPermissions(sessionPermissions);\n yield _this6.storage.saveSessionData();\n // Encrypt and save to sync storage\n const encryptedPermission = yield _this6.encryptPermission(permission);\n const syncPermissions = _this6.storage.getSyncPermissions();\n // Find by decrypting IDs (expensive but necessary for updates)\n let syncIndex = -1;\n for (let i = 0; i < syncPermissions.length; i++) {\n try {\n const decryptedId = yield _this6.encryption.decryptString(syncPermissions[i].id);\n if (decryptedId === permission.id) {\n syncIndex = i;\n break;\n }\n } catch {\n // Skip corrupted entries\n }\n }\n if (syncIndex >= 0) {\n syncPermissions[syncIndex] = encryptedPermission;\n } else {\n syncPermissions.push(encryptedPermission);\n }\n yield _this6.storage.saveSyncPermissions(syncPermissions);\n })();\n }\n delete(id) {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n const sessionPermissions = _this7.storage.getSessionPermissions();\n const initialLength = sessionPermissions.length;\n const filtered = sessionPermissions.filter(p => p.id !== id.value);\n if (filtered.length === initialLength) {\n return false;\n }\n _this7.storage.setSessionPermissions(filtered);\n yield _this7.storage.saveSessionData();\n // Remove from sync storage\n const encryptedId = yield _this7.encryption.encryptString(id.value);\n const syncPermissions = _this7.storage.getSyncPermissions();\n const filteredSync = syncPermissions.filter(p => p.id !== encryptedId);\n yield _this7.storage.saveSyncPermissions(filteredSync);\n return true;\n })();\n }\n deleteByIdentity(identityId) {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n const sessionPermissions = _this8.storage.getSessionPermissions();\n const initialLength = sessionPermissions.length;\n const filtered = sessionPermissions.filter(p => p.identityId !== identityId.value);\n const deletedCount = initialLength - filtered.length;\n if (deletedCount === 0) {\n return 0;\n }\n _this8.storage.setSessionPermissions(filtered);\n yield _this8.storage.saveSessionData();\n // Remove from sync storage\n const encryptedIdentityId = yield _this8.encryption.encryptString(identityId.value);\n const syncPermissions = _this8.storage.getSyncPermissions();\n const filteredSync = syncPermissions.filter(p => p.identityId !== encryptedIdentityId);\n yield _this8.storage.saveSyncPermissions(filteredSync);\n return deletedCount;\n })();\n }\n count(query) {\n var _this9 = this;\n return _asyncToGenerator(function* () {\n if (query) {\n const results = yield _this9.find(query);\n return results.length;\n }\n return _this9.storage.getSessionPermissions().length;\n })();\n }\n // ─────────────────────────────────────────────────────────────────────────\n // Private helpers\n // ─────────────────────────────────────────────────────────────────────────\n encryptPermission(permission) {\n var _this0 = this;\n return _asyncToGenerator(function* () {\n const encrypted = {\n id: yield _this0.encryption.encryptString(permission.id),\n identityId: yield _this0.encryption.encryptString(permission.identityId),\n host: yield _this0.encryption.encryptString(permission.host),\n method: yield _this0.encryption.encryptString(permission.method),\n methodPolicy: yield _this0.encryption.encryptString(permission.methodPolicy)\n };\n if (permission.kind !== undefined) {\n encrypted.kind = yield _this0.encryption.encryptNumber(permission.kind);\n }\n return encrypted;\n })();\n }\n}\n/**\n * Factory function to create a BrowserPermissionRepository.\n */\nexport function createPermissionRepository(storage, encryption) {\n return new BrowserPermissionRepository(storage, encryption);\n}","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]}