Files
livedash-node/server.ts
Kaj Kowalski 5bfd762e55 fix: comprehensive TypeScript/build fixes and modernization
- Update tsconfig to ES2024 target and bundler moduleResolution
- Add dynamic imports for chart.js and recharts (bundle optimization)
- Consolidate 17 useState into useReducer in sessions page
- Fix 18 .js extension imports across lib files
- Add type declarations for @rapideditor/country-coder
- Fix platform user types (PlatformUserRole enum)
- Fix Calendar component prop types
- Centralize next-auth type augmentation
- Add force-dynamic to all API routes (prevent build-time prerender)
- Fix Prisma JSON null handling with Prisma.DbNull
- Fix various type mismatches (SessionMessage, ImportRecord, etc.)
- Export ButtonProps from button component
- Update next-themes import path
- Replace JSX.Element with React.ReactElement
- Remove obsolete debug scripts and pnpm lockfile
- Downgrade eslint to v8 for next compatibility
2026-01-20 07:28:10 +01:00

55 lines
1.7 KiB
TypeScript

// Custom Next.js server with configurable scheduler initialization
import { createServer } from "node:http";
import { parse } from "node:url";
import next from "next";
import { getSchedulerConfig, logEnvConfig, validateEnv } from "./lib/env";
import { startImportProcessingScheduler } from "./lib/importProcessor";
import { startProcessingScheduler } from "./lib/processingScheduler";
import { startCsvImportScheduler } from "./lib/scheduler";
const dev = process.env.NODE_ENV !== "production";
const hostname = "localhost";
const port = Number.parseInt(process.env.PORT || "3000", 10);
// Initialize Next.js
const app = next({ dev, hostname, port });
const handle = app.getRequestHandler();
app.prepare().then(() => {
// Validate and log environment configuration
const envValidation = validateEnv();
if (!envValidation.valid) {
console.error("[Environment] Validation errors:", envValidation.errors);
}
logEnvConfig();
// Get scheduler configuration
const config = getSchedulerConfig();
// Initialize schedulers based on configuration
if (config.enabled) {
console.log("Initializing schedulers...");
startCsvImportScheduler();
startImportProcessingScheduler();
startProcessingScheduler();
console.log("All schedulers initialized successfully");
}
createServer(async (req, res) => {
try {
// Parse the URL
const parsedUrl = parse(req.url || "", true);
// Let Next.js handle the request
await handle(req, res, parsedUrl);
} catch (err) {
console.error("Error occurred handling", req.url, err);
res.statusCode = 500;
res.end("Internal Server Error");
}
}).listen(port, () => {
console.log(`> Ready on http://${hostname}:${port}`);
});
});