Add complete revision tracking system for scripts with: - Database schema for revisions and revision_changes tables - Diff engine with color-coded change types (addition/deletion/modification) - tRPC router with 14 endpoints (create/list/compare/rollback/branch/merge) - SolidJS components: RevisionTimeline, DiffViewer, RevisionReview - Unit tests for diff engine and router Co-Authored-By: Paperclip <noreply@paperclip.ing>
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { initHTTPServer } from '@trpc/server/adapters/node-http';
|
|
import { projectRouter } from './project-router';
|
|
import { revisionsRouter } from './revisions-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,
|
|
});
|
|
|
|
export type AppRouter = typeof appRouter;
|
|
|
|
// Create tRPC HTTP server
|
|
export function createTRPCServer(port: number = 8080) {
|
|
const server = initHTTPServer({
|
|
router: appRouter,
|
|
createContext: async ({ req }: { req: Request }): Promise<TRPCContext> => {
|
|
// Extract auth from headers
|
|
const authHeader = req.headers.get('authorization');
|
|
const userId = authHeader?.split(' ')[1]; // Bearer token
|
|
|
|
return {
|
|
userId,
|
|
};
|
|
},
|
|
onError: ({ error, path, input }: { error: TRPCError; path: string; input: unknown }) => {
|
|
console.error(`tRPC error on ${path}:`, {
|
|
input,
|
|
error: error.message,
|
|
});
|
|
},
|
|
});
|
|
|
|
server.listen(port, () => {
|
|
console.log(`tRPC server listening on port ${port}`);
|
|
});
|
|
|
|
return server;
|
|
}
|
|
|
|
export default appRouter;
|