UNPKG

@clipwhisperer/common

Version:

ClipWhisperer Common - Shared library providing core utilities, database schemas, authentication, bucket management, and common functionality across all ClipWhisperer microservices

54 lines (44 loc) 1.53 kB
import { config as loadEnv } from "dotenv"; loadEnv(); import { createVaultClient } from "./vault.js"; import { setOptionsProvider, ZodRoute } from "./util.js"; // Conditional vault import to avoid configuration errors let vault: any = null; try { // Use require for conditional import vault = createVaultClient(); } catch (error) { // Vault not configured, continue without it console.warn("Vault not configured, continuing without vault support"); } setOptionsProvider(async () => ({ vault })); import express from "express"; import { createConfig, createServer, Routing } from "express-zod-api"; import { logger, loggerMiddleware } from "../middleware/logger/logger.js"; import cookieParser from "cookie-parser"; import { DocumentationParams } from "./server.types.js"; const routing = (params: DocumentationParams): Routing => { return params.routes; }; export const startServer = async ( params: DocumentationParams ): ReturnType<typeof createServer> => { // Configure express-zod-api const config = createConfig({ http: { listen: params.port, }, cors: true, logger, startupLogo: false, beforeRouting: ({ app }) => { app.use(cookieParser()); app.use(express.json()); app.use(loggerMiddleware); }, }); // Create and start the server const { app, servers } = await createServer(config, routing(params)); logger.info(`App running on port ${params.port}`); return { app, servers, logger }; };