UNPKG

project-indexer

Version:

Local project indexer with browser trigger support

71 lines (55 loc) 1.93 kB
// src/server.js import cors from 'cors'; import express from 'express'; import {indexProject} from './projectIndexer.js'; const app = express(); const PORT = 5666; app.use(cors()); app.use(express.json()); let isIndexing = false; const key = 'bb891f7294e7bff539a47d212884f1789f861ae8517cad17a80f4ca7559703ca' app.post('/index', async (req, res) => { const {dir, projectId, serverUrl,projectName, token, deviceId} = req.body; console.log('indexing', dir, projectId, serverUrl); if (!token || !deviceId) { return res.status(400).json({error: 'Missing token or deviceId'}); } if (!dir || !serverUrl || !projectId || !projectName) { return res.status(400).json({error: 'Missing dir, projectId or serverUrl'}); } if (isIndexing) { return res.status(409).json({error: 'Already indexing'}); } try { isIndexing = true; const result = await indexProject(dir, serverUrl, projectId,projectName, token, deviceId); isIndexing = false; console.log('indexing done', result); // res.json({success: true, res: result}); return res.json(result); } catch (err) { isIndexing = false; res.status(500).json({error: err.message}); } }); app.get('/status', (req, res) => { res.json({ indexing: isIndexing }); }); const server = app.listen(PORT, () => { console.log(`📡 Local indexer running at http://localhost:${PORT}`); }); // Handle graceful shutdown process.on('SIGTERM', () => { console.log('SIGTERM signal received: closing HTTP server'); server.close(() => { console.log('HTTP server closed'); process.exit(0); }); }); process.on('SIGINT', () => { console.log('SIGINT signal received: closing HTTP server'); server.close(() => { console.log('HTTP server closed'); process.exit(0); }); });