feat(server): use UtilityWebsiteServer for dev server, add domain option, update docs, and bump dependencies

This commit is contained in:
2026-03-10 15:54:55 +00:00
parent b62e380750
commit 07cdee6bff
9 changed files with 1012 additions and 569 deletions

View File

@@ -15,7 +15,7 @@ import { logger } from './tswatch.logging.js';
export class TsWatch {
public config: interfaces.ITswatchConfig;
public watcherMap = new plugins.lik.ObjectMap<Watcher>();
public typedserver: plugins.typedserver.TypedServer | null = null;
public utilityWebsiteServer: plugins.typedserver.utilityservers.UtilityWebsiteServer | null = null;
private tsbundle = new plugins.tsbundle.TsBundle();
private customBundleHandler = new plugins.tsbundle.CustomBundleHandler();
@@ -75,8 +75,8 @@ export class TsWatch {
});
// Start server after watchers are ready
if (this.typedserver) {
await this.typedserver.start();
if (this.utilityWebsiteServer) {
await this.utilityWebsiteServer.start(this.config.server?.port || 3002);
logger.log('ok', `Dev server started on port ${this.config.server?.port || 3002}`);
}
}
@@ -91,14 +91,14 @@ export class TsWatch {
logger.log('info', `Setting up dev server on port ${port}, serving ${serveDir}`);
this.typedserver = new plugins.typedserver.TypedServer({
cors: true,
injectReload: serverConfig.liveReload !== false,
this.utilityWebsiteServer = new plugins.typedserver.utilityservers.UtilityWebsiteServer({
domain: serverConfig.domain || 'localhost',
serveDir: plugins.path.join(paths.cwd, serveDir),
port: port,
compression: true,
cors: true,
spaFallback: true,
noCache: true,
injectReload: serverConfig.liveReload !== false,
securityHeaders: {
crossOriginOpenerPolicy: 'same-origin',
crossOriginEmbedderPolicy: 'require-corp',
@@ -159,8 +159,8 @@ export class TsWatch {
logger.log('ok', `[${name}] bundle complete`);
// Trigger reload if configured and server is running
if (bundleConfig.triggerReload !== false && this.typedserver) {
await this.typedserver.reload();
if (bundleConfig.triggerReload !== false && this.utilityWebsiteServer?.typedserver) {
await this.utilityWebsiteServer.typedserver.reload();
}
};
@@ -211,8 +211,8 @@ export class TsWatch {
* stops the execution of any active Watchers
*/
public async stop() {
if (this.typedserver) {
await this.typedserver.stop();
if (this.utilityWebsiteServer) {
await this.utilityWebsiteServer.stop();
}
await this.watcherMap.forEach(async (watcher) => {
await watcher.stop();