UNPKG

@api.global/typedserver

Version:

A TypeScript-based project for easy serving of static files with support for live reloading, compression, and typed requests.

50 lines (42 loc) 1.33 kB
import { TypedServer } from '../classes.typedserver.js'; export interface ILoleServiceServerConstructorOptions { addCustomRoutes?: (typedserver: TypedServer) => Promise<any>; serviceName: string; serviceVersion: string; serviceDomain: string; port?: number; } // the main service server export class UtilityServiceServer { public options: ILoleServiceServerConstructorOptions; public typedServer: TypedServer; constructor(optionsArg: ILoleServiceServerConstructorOptions) { this.options = optionsArg; } public async start() { console.log('starting lole-serviceserver...'); this.typedServer = new TypedServer({ cors: true, domain: this.options.serviceDomain, forceSsl: false, port: this.options.port || 3000, robots: true, defaultAnswer: async () => { const InfoHtml = (await import('../infohtml/index.js')).InfoHtml; return ( await InfoHtml.fromSimpleText( `${this.options.serviceName} (version ${this.options.serviceVersion})` ) ).htmlString; }, }); // Add any custom routes if (this.options.addCustomRoutes) { await this.options.addCustomRoutes(this.typedServer); } await this.typedServer.start(); } public async stop() { await this.typedServer.stop(); } }