123456789101112131415161718192021222324252627282930313233 |
- 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;
- }
|