Spaces:
Build error
Build error
import { createWebDavClient } from "./webdav"; | |
import { createUpstashClient } from "./upstash"; | |
export enum ProviderType { | |
WebDAV = "webdav", | |
UpStash = "upstash", | |
} | |
export const SyncClients = { | |
[ProviderType.UpStash]: createUpstashClient, | |
[ProviderType.WebDAV]: createWebDavClient, | |
} as const; | |
type SyncClientConfig = { | |
[K in keyof typeof SyncClients]: (typeof SyncClients)[K] extends ( | |
_: infer C, | |
) => any | |
? C | |
: never; | |
}; | |
export type SyncClient = { | |
get: (key: string) => Promise<string>; | |
set: (key: string, value: string) => Promise<void>; | |
check: () => Promise<boolean>; | |
}; | |
export function createSyncClient<T extends ProviderType>( | |
provider: T, | |
config: SyncClientConfig[T], | |
): SyncClient { | |
return SyncClients[provider](config as any) as any; | |
} | |