Files
hoppscotch/packages/hoppscotch-selfhost-desktop/src/lib/sync/mapper.ts
Andrew Bastin 16044b5840 feat: desktop app
Co-authored-by: Vivek R <123vivekr@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-11-07 14:20:03 +05:30

43 lines
1.3 KiB
TypeScript

export const createMapper = <
LocalIDType extends string | number,
BackendIDType extends string | number
>() => {
const backendIDByLocalIDMap = new Map<
LocalIDType,
BackendIDType | undefined
>()
const localIDByBackendIDMap = new Map<
BackendIDType,
LocalIDType | undefined
>()
return {
addEntry(localIdentifier: LocalIDType, backendIdentifier: BackendIDType) {
backendIDByLocalIDMap.set(localIdentifier, backendIdentifier)
localIDByBackendIDMap.set(backendIdentifier, localIdentifier)
},
getValue() {
return backendIDByLocalIDMap
},
getBackendIDByLocalID(localIdentifier: LocalIDType) {
return backendIDByLocalIDMap.get(localIdentifier)
},
getLocalIDByBackendID(backendId: BackendIDType) {
return localIDByBackendIDMap.get(backendId)
},
removeEntry(backendId?: BackendIDType, index?: LocalIDType) {
if (backendId) {
const index = localIDByBackendIDMap.get(backendId)
localIDByBackendIDMap.delete(backendId)
index && backendIDByLocalIDMap.delete(index)
} else if (index) {
const backendId = backendIDByLocalIDMap.get(index)
backendIDByLocalIDMap.delete(index)
backendId && localIDByBackendIDMap.delete(backendId)
}
},
}
}