@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
text/typescript
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 };
};