mirror of
https://github.com/lotsoftick/openclaw_client.git
synced 2026-08-14 00:48:07 +00:00
55 lines
2.1 KiB
TypeScript
55 lines
2.1 KiB
TypeScript
import 'reflect-metadata';
|
|
import * as dotenv from 'dotenv';
|
|
import express, { Application, Request, Response } from 'express';
|
|
import morgan from 'morgan';
|
|
import helmet from 'helmet';
|
|
import bodyParser from 'body-parser';
|
|
import swaggerUi from 'swagger-ui-express';
|
|
import colors from 'colors';
|
|
import { swaggerConf, swaggerSpec } from './middlewares/swagger';
|
|
import expressErrorHandler from './middlewares/errorHandler';
|
|
import corsConf from './middlewares/cors';
|
|
import routes from './routes';
|
|
import seedAdminUser from './seed';
|
|
import AppDataSource from './data-source';
|
|
import { ensureDevicePaired, gateway } from './services/openclawGateway';
|
|
import attachPtyWebSocket from './services/ptyService';
|
|
|
|
dotenv.config();
|
|
|
|
const app: Application = express();
|
|
app.use('/api/public', express.static(`${__dirname}/public`));
|
|
app.use(helmet());
|
|
app.use(corsConf);
|
|
app.use(bodyParser.urlencoded({ extended: false }));
|
|
app.use(bodyParser.json());
|
|
if (['test', 'development'].includes(process.env.NODE_ENV)) app.use(morgan('dev'));
|
|
if (process.env.NODE_ENV === 'development') app.use('/api/docs', swaggerUi.serve, swaggerConf);
|
|
app.use('/api', routes);
|
|
app.use('/', (req: Request, res: Response) => res.status(200).json());
|
|
app.use('*', (req: Request, res: Response) => res.status(404).json());
|
|
app.use(expressErrorHandler);
|
|
|
|
(async () => {
|
|
try {
|
|
if (process.env.NODE_ENV !== 'test') {
|
|
await AppDataSource.initialize();
|
|
console.log(colors.green('SQLite database connected')); /* eslint-disable-line */
|
|
await seedAdminUser();
|
|
await ensureDevicePaired();
|
|
const gwOk = await gateway.ensureConnected();
|
|
if (gwOk) console.log(colors.green('[gateway] persistent connection ready')); /* eslint-disable-line */
|
|
else console.warn(colors.yellow('[gateway] initial connection failed, will use CLI fallback')); /* eslint-disable-line */
|
|
const server = app.listen(18802, () => console.log(colors.green('running on port 18802'))); /* eslint-disable-line */
|
|
attachPtyWebSocket(server);
|
|
}
|
|
} catch (error) {
|
|
console.log(colors.red('%s'), error); /* eslint-disable-line */
|
|
}
|
|
})();
|
|
|
|
export {
|
|
app,
|
|
swaggerSpec,
|
|
};
|