yasui
Version:
Lightweight Express-based framework for REST and web APIs
41 lines • 4.18 kB
JavaScript
import kleur from 'kleur';
import { createServer as createHttpServer } from 'http';
import { Core } from './core.js';
export function createServer(conf) {
const core = new Core(conf);
console.clear();
core.logger.log(kleur.bold('やすいです!'), 'yasui', kleur.magenta);
if (conf.environment) {
core.logger.log(`run as ${conf.environment} environment`, 'app', kleur.blue);
}
const app = core.createApp();
const server = createHttpServer(app);
const port = conf.port || 3000;
server.listen(port, () => {
if (core.decoratorValidator?.hasError()) {
core.logger.warn('server started with errors');
core.decoratorValidator.outputErrors();
core.decoratorValidator = null;
}
else {
core.logger.success('server successfully started');
}
const address = server.address();
const protocol = conf.protocol || 'http';
const host = address && typeof address === 'object' && address.address !== '::' ? address.address : 'localhost';
const url = `${protocol}://${host}:${port}`;
core.logger.log(`server listens on ${kleur.underline(url)}`);
if (conf.swagger) {
core.logger.log(`documentation on ${kleur.underline(`${url}/${conf.swagger.path || 'api-docs'}`)}`);
}
});
return server;
}
export function createApp(conf) {
const core = new Core(conf);
const app = core.createApp();
core.decoratorValidator?.outputErrors();
core.decoratorValidator = null;
return app;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQVUsWUFBWSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLakMsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFpQjtJQUM1QyxNQUFNLElBQUksR0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLFdBQVcsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFnQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUMsTUFBTSxNQUFNLEdBQVcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsTUFBTSxJQUFJLEdBQW9CLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO0lBRWhELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtRQUN2QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakMsTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUM7UUFDakQsTUFBTSxJQUFJLEdBQUcsT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ2hILE1BQU0sR0FBRyxHQUFHLEdBQUcsUUFBUSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEcsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUdELE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBaUI7SUFDekMsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQWdCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDeEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUMvQixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMifQ==