UNPKG

@tomisakae/syosetu-api

Version:

Enterprise-grade Fastify TypeScript API for Syosetu.com data extraction using official API and web scraping. Run instantly with 'npx @tomisakae/syosetu-api'

53 lines β€’ 2.34 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("module-alias/register"); require("dotenv/config"); const app_1 = require("./app"); const config_1 = require("@/config"); const utils_1 = require("@/utils"); async function startServer() { try { const app = await (0, app_1.createApp)(); await app.listen({ port: config_1.appConfig.port, host: config_1.appConfig.host, }); console.log(`πŸš€ Server Δ‘ang chαΊ‘y trΓͺn http://${config_1.appConfig.host}:${config_1.appConfig.port}`); console.log(`πŸ“Š Health check: http://${config_1.appConfig.host}:${config_1.appConfig.port}/health`); console.log(`πŸ” Syosetu API: http://${config_1.appConfig.host}:${config_1.appConfig.port}/api/syosetu`); console.log(`πŸ“š API Documentation: http://${config_1.appConfig.host}:${config_1.appConfig.port}/docs`); console.log(`🌍 Environment: ${config_1.appConfig.nodeEnv}`); utils_1.logger.info('Server started successfully'); const gracefulShutdown = async (signal) => { utils_1.logger.info(`${signal} received, shutting down gracefully...`); try { await app.close(); utils_1.logger.info('βœ… Fastify server closed'); utils_1.logger.info('βœ… Graceful shutdown completed'); process.exit(0); } catch (error) { utils_1.logger.error('❌ Error during graceful shutdown:', error); process.exit(1); } }; process.on('SIGTERM', () => gracefulShutdown('SIGTERM')); process.on('SIGINT', () => gracefulShutdown('SIGINT')); process.on('uncaughtException', error => { utils_1.logger.error('❌ Uncaught Exception:', error); process.exit(1); }); process.on('unhandledRejection', (reason, promise) => { utils_1.logger.error('❌ Unhandled Rejection at:', promise, 'reason:', reason); process.exit(1); }); } catch (error) { console.error('❌ Failed to start server:', error); utils_1.logger.error('❌ Failed to start server:', error); process.exit(1); } } void startServer(); //# sourceMappingURL=server.js.map