diff options
Diffstat (limited to 'apps/cli/src/lib')
| -rw-r--r-- | apps/cli/src/lib/globals.ts | 17 | ||||
| -rw-r--r-- | apps/cli/src/lib/trpc.ts | 22 |
2 files changed, 39 insertions, 0 deletions
diff --git a/apps/cli/src/lib/globals.ts b/apps/cli/src/lib/globals.ts new file mode 100644 index 00000000..771136da --- /dev/null +++ b/apps/cli/src/lib/globals.ts @@ -0,0 +1,17 @@ +export interface GlobalOptions { + apiKey: string; + serverAddr: string; +} + +export let globalOpts: GlobalOptions | undefined = undefined; + +export function setGlobalOptions(opts: GlobalOptions) { + globalOpts = opts; +} + +export function getGlobalOptions() { + if (!globalOpts) { + throw new Error("Global options are not initalized yet"); + } + return globalOpts; +} diff --git a/apps/cli/src/lib/trpc.ts b/apps/cli/src/lib/trpc.ts new file mode 100644 index 00000000..aa7aec21 --- /dev/null +++ b/apps/cli/src/lib/trpc.ts @@ -0,0 +1,22 @@ +import { getGlobalOptions } from "@/lib/globals"; +import { createTRPCClient, httpBatchLink } from "@trpc/client"; +import superjson from "superjson"; + +import type { AppRouter } from "@hoarder/trpc/routers/_app"; + +export function getAPIClient() { + const globals = getGlobalOptions(); + return createTRPCClient<AppRouter>({ + links: [ + httpBatchLink({ + url: `${globals.serverAddr}/api/trpc`, + transformer: superjson, + headers() { + return { + authorization: `Bearer ${globals.apiKey}`, + }; + }, + }), + ], + }); +} |
