| 12345678910111213141516171819202122232425262728293031323334 |
- import { createWebDavClient } from "./webdav";
- import { createUpstashClient } from "./upstash";
- import { SyncStore } from "@/app/store/sync";
- 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,
- store: SyncStore,
- ): SyncClient {
- return SyncClients[provider](store);
- }
|