UNPKG

rjweb-server

Version:

Easy and Robust Way to create a Web Server with Many Easy-to-use Features in NodeJS

127 lines (126 loc) 3.52 kB
import { GlobalContext } from "../types/context"; import { Options } from "../functions/parseOptions"; import RouteList from "./router"; import { OpenAPIObject } from "../types/openAPI3"; import { MiddlewareInitted } from "../types/internal"; import RouteFile from "./router/file"; import uWebsocket from "@rjweb/uws"; /** * A Server Instance containing a built in router and http modules * @example * ``` * const server = new Server(...) * ``` * @since 3.0.0 */ export default class Server<GlobContext extends Record<any, any> = {}, Middlewares extends MiddlewareInitted[] = []> extends RouteList<GlobContext, Middlewares> { protected globalContext: GlobalContext; protected server: uWebsocket.TemplatedApp; protected socket: uWebsocket.us_listen_socket; /** * Initialize a new Server * @example * ``` * const controller = new Server({ * port: 8000 * }) * * module.exports.server = controller * ``` * @since 3.0.0 */ constructor( /** The Server Options */ options?: Options, /** The Middlewares */ middlewares?: Middlewares, /** The Default GlobalContext Values */ globContext?: GlobContext); /** * Override the set Server Options * @example * ``` * const controller = new Server({ }) * * controller.setOptions({ * port: 6900 * }) * ``` * @since 3.0.0 */ setOptions( /** The Options */ options: Options): this; /** * Get OpenAPI 3.1 Defininitions for this Server (make sure to let all routes load before calling) * @example * ``` * const controller = new Server({ port: 4200 }) * * controller.path('/', (path) => path * .http('GET', '/openapi', (http) => http * .onRequest((ctr) => { * ctr.print(ctr.controller.getOpenApi3Def('http://localhost:4200')) * }) * ) * ) * ``` * @since 7.6.0 */ getOpenAPI3Def(serverUrl?: string): OpenAPIObject; /** * Route File Builder * @example * ``` * const { server } = require('../index.js') * * module.exports = new server.routeFile((file) => file * .http(...) * ) * ``` * @since 7.0.0 */ routeFile: new (...args: ConstructorParameters<typeof RouteFile<GlobContext, Middlewares>>) => RouteFile<GlobContext, Middlewares>; /** * Start the Server * @example * ``` * const controller = new Server({ }) * * controller.start() * .then((port) => { * console.log(`Server started on port ${port}`) * }) * .catch((err) => { * console.error(err) * }) * ``` * @since 3.0.0 */ start(): Promise<number>; /** * Reload the Server * @example * ``` * const controller = new Server({ }) * * controller.reload() * .then((port) => { * console.log(`Server reloaded and started on port ${port}`) * }) * .catch((err) => { * console.error(err) * }) * ``` * @since 3.0.0 */ reload(): Promise<number>; /** * Stop the Server * @example * ``` * const controller = new Server({ }) * * controller.stop() * .then(() => { * console.log('Server stopped') * }) * .catch((err) => { * console.error(err) * }) * ``` * @since 3.0.0 */ stop(): Promise<void>; /** * Load all External Paths */ private loadExternalPaths; }