- Create ProtonMail API client (src/lib/mail/protonmail-client.ts) - Add tRPC mail router with 8 endpoints (server/trpc/mail-router.ts) - Wire mail router into appRouter (server/trpc/index.ts) - Add module exports (src/lib/mail/index.ts) Endpoints: - mail.messages, mail.message, mail.send - mail.contact, mail.contacts, mail.addContact - mail.attachment, mail.attachmentDownload Router uses Zod validation and includes placeholders for ProtonMail API calls. Co-Authored-By: Paperclip <noreply@paperclip.ing>
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { createHTTPServer } from '@trpc/server/adapters/standalone';
|
|
import { projectRouter } from './project-router';
|
|
import { revisionsRouter } from './revisions-router';
|
|
import { scriptsRouter } from './scripts-router';
|
|
import { waitlistRouter } from './waitlist-router';
|
|
import { betaRouter } from './beta-router';
|
|
import { mailRouter } from './mail-router';
|
|
import type { TRPCContext } from './types';
|
|
import type { TRPCError } from '@trpc/server';
|
|
import { t } from './router';
|
|
|
|
// App router combining all routers
|
|
export const appRouter = t.router({
|
|
project: projectRouter,
|
|
revisions: revisionsRouter,
|
|
scripts: scriptsRouter,
|
|
waitlist: waitlistRouter,
|
|
beta: betaRouter,
|
|
mail: mailRouter,
|
|
} as const);
|
|
|
|
export type AppRouter = typeof appRouter;
|
|
|
|
// Create tRPC HTTP server - db is loaded lazily to avoid requiring Turso env vars at import time
|
|
export function createTRPCServer(port: number = 8080) {
|
|
const server = createHTTPServer({
|
|
router: appRouter,
|
|
createContext: async (): Promise<TRPCContext> => {
|
|
const { db } = await import('../../src/db/config/migrations');
|
|
return {
|
|
userId: undefined,
|
|
db,
|
|
};
|
|
},
|
|
onError: ({ error, path }: { error: TRPCError; path: string | undefined }) => {
|
|
console.error(`tRPC error on ${path}:`, error.message);
|
|
},
|
|
});
|
|
|
|
server.listen(port, () => {
|
|
console.log(`tRPC server listening on port ${port}`);
|
|
});
|
|
|
|
return server;
|
|
}
|
|
|
|
export default appRouter;
|