From 114a222b653f8dd5806766c76676bcb2c25b5c0d Mon Sep 17 00:00:00 2001 From: Hoseong Lee Date: Fri, 24 Apr 2026 15:18:41 -0500 Subject: [PATCH 1/2] Added another optional param to the storage.delete function --- .../src/__tests__/syncDown/utils.test.ts | 16 ++++++++++++++++ keeperapi/src/vault.ts | 19 ++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 keeperapi/src/__tests__/syncDown/utils.test.ts diff --git a/keeperapi/src/__tests__/syncDown/utils.test.ts b/keeperapi/src/__tests__/syncDown/utils.test.ts new file mode 100644 index 00000000..1e51aa0e --- /dev/null +++ b/keeperapi/src/__tests__/syncDown/utils.test.ts @@ -0,0 +1,16 @@ +import { + createKdRecordAccessCompositeKey, + createKdFolderAccessCompositeKey, +} from '../../syncDown/utils' + +describe('createKdRecordAccessCompositeKey', () => { + it('produces actorUid:recordUid format', () => { + expect(createKdRecordAccessCompositeKey('actor1', 'record1')).toBe('actor1:record1') + }) +}) + +describe('createKdFolderAccessCompositeKey', () => { + it('produces folderUid:actorUid format', () => { + expect(createKdFolderAccessCompositeKey('actor1', 'folder1')).toBe('folder1:actor1') + }) +}) diff --git a/keeperapi/src/vault.ts b/keeperapi/src/vault.ts index ea3cba37..849da3aa 100644 --- a/keeperapi/src/vault.ts +++ b/keeperapi/src/vault.ts @@ -35,8 +35,13 @@ import { DKdFolderSharingState, mapTeamKeyType, DKdRecordLink, + createKdFolderAccessCompositeKey, } from './syncDown' +export type VaultStorageDeleteOption = + | { kind: 'keeper_drive_record_access'; actorUid: string; recordUid: string } + | { kind: 'keeper_drive_folder_access'; folderUid: string; actorUid: string } + export type VaultStorage = KeyStorage & { put(data: VaultStorageData): Promise getDependencies(uid: string): Promise @@ -44,7 +49,7 @@ export type VaultStorage = KeyStorage & { removeDependencies(dependencies: RemovedDependencies): Promise clear(): Promise get(kind: T, uid?: string): Promise> - delete(kind: VaultStorageKind, uid: string | Uint8Array): Promise + delete(kind: VaultStorageKind, uid: string | Uint8Array, option?: VaultStorageDeleteOption): Promise } export type VaultStorageData = @@ -1074,7 +1079,11 @@ const processKdRevokedFolderAccesses = async ( if (!revokedAccess.actorUid || !revokedAccess.folderUid) continue const actorUid = webSafe64FromBytes(revokedAccess.actorUid) const folderUid = webSafe64FromBytes(revokedAccess.folderUid) - await storage.delete('keeper_drive_folder_access', `${folderUid}:${actorUid}`) + await storage.delete('keeper_drive_folder_access', createKdFolderAccessCompositeKey(actorUid, folderUid), { + kind: 'keeper_drive_folder_access', + actorUid, + folderUid, + }) } } @@ -1391,7 +1400,11 @@ const processKdRevokedRecordAccesses = async ( if (!revokedAccess.actorUid || !revokedAccess.recordUid) continue const actorUid = webSafe64FromBytes(revokedAccess.actorUid) const recordUid = webSafe64FromBytes(revokedAccess.recordUid) - await storage.delete('keeper_drive_record_access', createKdRecordAccessCompositeKey(actorUid, recordUid)) + await storage.delete('keeper_drive_record_access', createKdRecordAccessCompositeKey(actorUid, recordUid), { + kind: 'keeper_drive_record_access', + actorUid, + recordUid, + }) } } From 0e59528fb44977f4e191c984f68e576522049bd2 Mon Sep 17 00:00:00 2001 From: Hoseong Lee Date: Mon, 27 Apr 2026 10:08:05 -0500 Subject: [PATCH 2/2] updated the code format --- keeperapi/src/__tests__/syncDown/utils.test.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/keeperapi/src/__tests__/syncDown/utils.test.ts b/keeperapi/src/__tests__/syncDown/utils.test.ts index 1e51aa0e..55296062 100644 --- a/keeperapi/src/__tests__/syncDown/utils.test.ts +++ b/keeperapi/src/__tests__/syncDown/utils.test.ts @@ -1,7 +1,4 @@ -import { - createKdRecordAccessCompositeKey, - createKdFolderAccessCompositeKey, -} from '../../syncDown/utils' +import { createKdRecordAccessCompositeKey, createKdFolderAccessCompositeKey } from '../../syncDown' describe('createKdRecordAccessCompositeKey', () => { it('produces actorUid:recordUid format', () => {