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
TypeScript
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;
}